Lars-H Skrevet 9. mai 2011 Del Skrevet 9. mai 2011 Hei. Har nå sittet i flere timer med en javascriptfunksjon som skal validere ett inputfelt i et skjema. Jeg får feilmelding om at "document.skjema is undefined", selv om skjema kommer inn som innparameter sammen med felt. Kode: <script type="text/javascript"> function valider(skjema,felt) { if (document.skjema.felt.value=="") { alert( "Skriv inn et gyldig antall." ); document.skjema.felt.focus(); return false ; } else { regEx = /^[0-9]{1,3}$/; OK = regEx.test(document.skjema.felt.value); if(!OK) { alert( "Antallet du har skrevet inn er ikke gyldig! Prøv igjen." ); document.skjema.felt.focus(); return false ; } } } </script> det virker som om den ikke finner skjema og felt, som kommer inn der funksjonen kalles: <form action='' method='post' onsubmit='return valider(this,ant".$vare->get_vareID().");'> Scriptet vil altså ikke kjøres i det hele tatt. Er det noen som vet hvor feilen kan ligge? Mvh Lars. Lenke til kommentar
lassejl Skrevet 10. mai 2011 Del Skrevet 10. mai 2011 (endret) Når du sender inn 'skjema' som en parameter, blir dette lagret som en variabel ved navn 'skjema' og det er derfor 'document.skjema' er undefined, bruk kun 'skjema'. Dersom dette ikke fungerer, ville jeg gitt skjemaet en ID og brukt 'document.getElementById'. Ser også et potensielt problem med onsubmitten din, hvor du har brukt PHP-kode i javascript, denne bør vel skrives om til: <form action='' method='post' onsubmit='return valider(this,ant"+<?php echo $vare->get_vareID(); ?>);'> Eller noe lignende? Potensiell #2: Ser ikke at skjemaet blir submitted, funksjonen bør enten ha 'return true;' eller 'skjema.submit();' på slutten? Endret 10. mai 2011 av lassejl Lenke til kommentar
Lars-H Skrevet 10. mai 2011 Forfatter Del Skrevet 10. mai 2011 (endret) Når du sender inn 'skjema' som en parameter, blir dette lagret som en variabel ved navn 'skjema' og det er derfor 'document.skjema' er undefined, bruk kun 'skjema'. Dersom dette ikke fungerer, ville jeg gitt skjemaet en ID og brukt 'document.getElementById'. Ser også et potensielt problem med onsubmitten din, hvor du har brukt PHP-kode i javascript, denne bør vel skrives om til: <form action='' method='post' onsubmit='return valider(this,ant"+<?php echo $vare->get_vareID(); ?>);'> Eller noe lignende? Potensiell #2: Ser ikke at skjemaet blir submitted, funksjonen bør enten ha 'return true;' eller 'skjema.submit();' på slutten? Hei, og takk for svar! Har prøvd bare skjema.felt... (uten document.) men da står det bare "skjema.felt is undefined", så er egentlig like langt. Jeg er også nødt til å ha hele skjemaet via echo i PHP, da hele skjemaet vises via en for-løkke. Dette kommer av at det er en nettbutikk med x antall varer (et skjema for hver vare). Derfor må jeg også ha med i javascriptet hvilket skjema og hvilket felt som skal testes på (skjema.felt). Har forsøkt med getElementById, men skjønner egentlig helt hvordan den funksjonen fungerer. Skal denne hente bare skjemaet (form) eller selve feltet i skjemaet? -Og det siste du skrev, mener du å ha "return true;" under if og else testene, eller i en ny (else)if-test? Takk for hjelp! EDIT: Prøvde nå med getElementById: function valider(skjema) { if (document.getElementById(skjema)==null) { alert( "Skriv inn et gyldig antall." ); document.getElementById(skjema).focus(); return false ; } else { regEx = /^[0-9]{1,3}$/; OK = regEx.test(document.getElementById(skjema)); if(!OK) { alert( "Antallet du har skrevet inn er ikke gyldig! Prøv igjen." ); document.getElementById(skjema).focus(); return false ; } } } Dette fungerer heller ikke - document.getElementById(skjema) returnerer bare null. Har jeg gjort dette riktig? Endret 10. mai 2011 av Lars-H Lenke til kommentar
Kaptein Snus Skrevet 11. mai 2011 Del Skrevet 11. mai 2011 document.getElementById() returnere hele formen, hvis det er formen du har satt en ID på. Lenke til kommentar
Lars-H Skrevet 11. mai 2011 Forfatter Del Skrevet 11. mai 2011 Har prøvd både getElementById(skjemaID) og getElementById(feltID), men ingen av de returnerer noen ting. Lenke til kommentar
molty Skrevet 19. mai 2011 Del Skrevet 19. mai 2011 ta document.getElementById(skjema).innerHTML eller .value eller .lenght og se hva den sier da. 1 Lenke til kommentar
cbastus Skrevet 19. mai 2011 Del Skrevet 19. mai 2011 (endret) Feilen ligger i måten du henviser til DOM-elementene på. Det skal være nok å henvise til feltene med rett navn, gitt at flere felt ikke har samme navn. JS: function valider(skjema,felt) { if (felt.value=="") { alert( "Skriv inn et gyldig antall." ); felt.focus(); return false ; } else { regEx = /^[0-9]{1,3}$/; OK = regEx.test(felt.value); if(!OK) { alert( "Antallet du har skrevet inn er ikke gyldig! Prøv igjen." ); felt.focus(); return false ; } } } </script> HTML: <form action='' method='post' onsubmit='return valider(this,feltet);'> <input name="feltet" type="text" /> <input type="submit" /> </form> EDIT: Vil du bruke document.getElementById() blir det slik: <script type="text/javascript"> function valider(felt) { var felt = document.getElementById(felt); // Her kan du med fordel sjekke om feltet eksisterer if (felt.value=="") { alert( "Skriv inn et gyldig antall." ); felt.focus(); return false ; } else { regEx = /^[0-9]{1,3}$/; OK = regEx.test(felt.value); if(!OK) { alert( "Antallet du har skrevet inn er ikke gyldig! Prøv igjen." ); felt.focus(); return false ; } } } </script> <form action='' method='post' onsubmit='return valider("feltet");'> <input id="feltet" type="text" /> <input type="submit" /> </form> Endret 19. mai 2011 av cbastus 1 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå