07. juli 2004 - 15:34Der er
19 kommentarer og 1 løsning
funktionskald med variabler
Hej Javascript-eksperter !
Jeg arbejder stadig på testplan med validering af formular, og vil gerne kalde funktionen valider() med nogle variabler, men det virker ikke. Nedenstående virker med de første 2 variabler ( en for formularens navn, og en værdi for hvad der skal tjekkes. -----kode----- function valider(f,mode){ if (mode==1) { if(f.brugernavn.value=="") { alert("feltet skal udfyldes"); f.brugernavn.select(); f.brugernavn.focus(); return false; } } else { if(f.brugernavn.value!="Peter"){ alert("navnet skal være 'Peter' "); f.brugernavn.select(); f.brugernavn.focus(); } return false; } } -----/kode-----
Hvis jeg nu vil tilføje en variabel for feltnavnet, så virker det ikke... -----kode----- function valider(f,e,mode){ if (mode==1) { if(f.e.value=="") { alert("feltet skal udfyldes"); f.e.select(); f.e.focus(); return false; } } else { if(f.e.value!="Peter"){ alert("navnet skal være 'Peter' "); f.e.select(); f.e.focus(); } return false; } } -----/kode-----
jeg kalder koden med eksempelvis <INPUT name="brugernavn" size=45 onblur="valider(min_formular,brugernavn,1);">
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
melder: Der opstod en fejl på siden... jeg har prøvet begge varianter, og jeg har også afprøvet funktionskaldet: <INPUT name="brugernavn" size=45 onblur="valider(document.forms[min_formular],elements[brugernavn],1);">
Det var det rigtige 'svar' - dvs. smid lige et svar - der ryger points på din konto...
Jeg skal teste lidt videre, og det jeg mener at have set noget i retning af: document.forms[this].elements[this] er der noget om snakken - kan jeg evt. få nogen tips ???
jeg har forsøgt selv med noget jeg bruger fra php-programmering, men det virker ikke: if(!ereg("[A-z0-9]+@", e.value)){ alert("navnet skal være en email med et '@' "); e.select(); e.focus(); return false; }
I javascript kan du enten konstruere en regexp som et object eller angive det bogstaveligt, her ligner det, at den bogstavelige er nemmest, men jeg har en solid ting, som burde være voldsomt fremtidssikret:
var t = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ"; var regexp = new RegExp("^["+t+"]["+t+"\\.\\-]*@["+t+"]["+t+"\\.\\-]*\\.["+t+"]{2,}$","i"); if(!regexp.test(e.value)){ alert("navnet skal være en gyldig email"); e.select(); e.focus(); return false; }
Egentlig ikke i top-domænet, men ellers er de faktisk, ja ...
-- der er nu stadig en masse steder rundt om på nettet, hvor de fungerer dårligt, f.eks. også i Internet Explorer, som kræver en plugin, så det skulle ikke undre mig om også Outlook/Express havde problemer ...
-- men er de principielt lovlige skal de vel også godkendes !-)
-- og så må jeg jo hellere rette den til, for i øjeblikket er det længste top-domæne 'museum', så det bliver:
var regexp = new RegExp("^["+t+"]["+t+"\\.\\-]*@["+t+"]["+t+"\\.\\-]*\\.[\\w]{2,6}$","i");
bør den sidste ikke være: if(!regexp.test(e.value)||/(\-\-|\.\.)/g.test(e.value)){ iflg mine oplysninger heller ikke dobbelte bindstreger, og der er jo 2 tegn-grupper både før og efter @'et...
Der har rigtig været gang i regexp mens jeg har været fraværende et par timer...
Jeg havde nu ikke tænkt mig en særlig avanceret validering her men kun et tjek på at feltet indeholder et @ og nogle tegn, og at der ikke er puttet 2 emailadresser i feltet, men nu har jeg set en masse eksempler på hvordan regexp placeres, så jeg prøver at finde min løsning ud fra det tak til både mm12010 og roeving.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.