swj Skrevet 12. mai 2007 Del Skrevet 12. mai 2007 (endret) Edit: Har løst problemet. Oppdaget plutselig at jeg har glemt å sette "var" før kontaktskjema = document.getElementById('kontaktskjema'); Jeg har et formskjema som jeg ønsker datakontroll på for å sjekke at feltene er fylt ut. Koden jeg har nå fungerer i Firefox og Opera, men ikke i IE. Noen som har tips til hva jeg kan gjøre for å få til det? Noen som kan hjelpe meg litt? <script type="text/javascript"> function checkform(){ var complete = true; kontaktskjema = document.getElementById('kontaktskjema'); // sjekker om fornavn er skrevet inn. if (kontaktskjema.navn.value == "" || kontaktskjema.navn.value == null){ alert("Vennligst oppgi fornavn"); kontaktskjema.navn.focus(); complete = false; } //sjekker om epost er skrevet inn else if(kontaktskjema.email.value == "" || kontaktskjema.email.value == null){ alert("Vennligst fyll ut din epost adresse"); kontaktskjema.email.focus(); complete = false; } //sjekker at eposten har riktig syntaks else if (kontaktskjema.email.value.indexOf("@") == -1){ alert("Du har ikke oppgitt en gyldig epostadresse"); kontaktskjema.email.focus(); complete = false; } //sjekker at emnefeltet er fylt ut else if(kontaktskjema.emne.value == "" || kontaktskjema.emne.value == null){ alert("Vennligst fyll ut emne"); kontaktskjema.emne.focus(); complete = false; } //sjekker at beskjedfeltet er fylt ut else if(kontaktskjema.beskjed.value == "" || kontaktskjema.beskjed.value == null){ alert("Vennligst skriv inn beskjeden"); kontaktskjema.beskjed.focus(); complete = false; } return complete; } </script> <form action="mail.php" onsubmit="return checkform();" method="post" enctype="multipart/form-data" id="kontaktskjema"> <table width="500"> <tr> <td><font size="2">Navn</font></td> <td><input name="navn" type="text" id="navn"/> </td> </tr> <tr> <td><font size="2" >E-post</font></td> <td><input name="email" type="text" id="email"/> </td> </tr> <tr> <td><font size="2" >Emne</font></td> <td><input name="emne" type="text" id="emne"/></td> </tr> <tr> <td><font size="2" >Beskjed</font></td> <td><textarea name="beskjed" cols="30" rows="10" id="beskjed"></textarea></td> </tr> <tr> <td></td> <td ><input name="submit" type="submit" id="submit" value="Send" /> <input name="reset" type="reset" id="reset" value="Nullstill"/> </td> </tr> </table> </form> Endret 13. mai 2007 av swj Lenke til kommentar
Kagee Skrevet 12. mai 2007 Del Skrevet 12. mai 2007 Hvis problemet er at formen sendes selvom det er noe feil, så tror jeg du må legge til "return false;" i onsubmit. <form action="mail.php" onsubmit="return false;return checkform();" method="post" enctype="multipart/form-data" id="kontaktskjema"> Lenke til kommentar
swj Skrevet 12. mai 2007 Forfatter Del Skrevet 12. mai 2007 (endret) Hvis problemet er at formen sendes selvom det er noe feil, så tror jeg du må legge til "return false;" i onsubmit. <form action="mail.php" onsubmit="return false;return checkform();" method="post" enctype="multipart/form-data" id="kontaktskjema"> 8596903[/snapback] Takk for svar. Det som skjer i Firefox og Opera er at om man dropper å fylle ut et felt, så får man opp en melding som sier "Vennligst fyll ut navn" osv, og man blir stående i dokumentet til alle feltene er fylt ut. Dette skjer ikke i IE. Da får man ingen feilmeldinger, og man sender en tom melding. Ved å sette onsubmit til false så fikk jeg ikke noe feilmeldinger i noen nettlesere og heller ikke sendt noe som helst selv med alle felt riktig utfylt. Tror jeg på en eller annen måte må få lagt inn en test for å sjekke på hvilken nettleser som brukes for å lese dokumentet, men jeg er ikke helt sikker på hvordan jeg skal løse det. Edit: Grunnen til at jeg tror sjekk på nettleser vil hjelpe meg er at dersom jeg dropper linjen: kontaktskjema = document.getElementById('kontaktskjema'); så kontrolleres alt som det skal i IE og i Opera. Når jeg legger til den linjen, så fungerer det ikke i IE lenger, men det fungerer bra i Firefox og Opera... Endret 12. mai 2007 av swj Lenke til kommentar
Kagee Skrevet 12. mai 2007 Del Skrevet 12. mai 2007 Jeg er sikker på at det er noe som ligner mitt første eksempel - du hadde med BÅDE "return false;" OG "return checkform();"? Hva med true? <form action="mail.php" onsubmit="return true;return checkform();" method="post" enctype="multipart/form-data" id="kontaktskjema"> Lenke til kommentar
Kagee Skrevet 12. mai 2007 Del Skrevet 12. mai 2007 http://www.java2s.com/Code/JavaScript/Form...netExplorer.htm Dette kan være løsningen. Lenke til kommentar
swj Skrevet 12. mai 2007 Forfatter Del Skrevet 12. mai 2007 Jeg er sikker på at det er noe som ligner mitt første eksempel - du hadde med BÅDE "return false;" OG "return checkform();"? Hva med true? <form action="mail.php" onsubmit="return true;return checkform();" method="post" enctype="multipart/form-data" id="kontaktskjema"> 8598506[/snapback] Ja, jeg hadde med både return false og return checkform. Jeg forsøkte å erstatte med true som du foreslo, men da går alt gjennom, uten noe form for kontroll. Jeg holder på å se på eksempelet du viste til. Jeg er litt usikker på hvordan du mener jeg kan løse det på den måten. Skal jeg lage en funksjon for hvert felt da mener du? Jeg ønsker ikke at det kun skal komme opp en alert når jeg trykker submit, men jeg ønsker en sjekk på at hvert felt er fylt ut. Lenke til kommentar
Kagee Skrevet 12. mai 2007 Del Skrevet 12. mai 2007 (endret) Jeg oppdaterte kodeeksempelet ditt, sjekk hva som skjer nå. PS: Hadde jeg vært en moderator, hadde jeg bemerket at du har en dårlig emnetittel. Legg gjerne inn [LØST] hvis dette funker. <script type="text/javascript"> function checkform(e){ var complete = true; kontaktskjema = document.getElementById('kontaktskjema'); // sjekker om fornavn er skrevet inn. if (kontaktskjema.navn.value == "" || kontaktskjema.navn.value == null){ alert("Vennligst oppgi fornavn"); kontaktskjema.navn.focus(); complete = false; } //sjekker om epost er skrevet inn else if(kontaktskjema.email.value == "" || kontaktskjema.email.value == null){ alert("Vennligst fyll ut din epost adresse"); kontaktskjema.email.focus(); complete = false; } //sjekker at eposten har riktig syntaks else if (kontaktskjema.email.value.indexOf("@") == -1){ alert("Du har ikke oppgitt en gyldig epostadresse"); kontaktskjema.email.focus(); complete = false; } //sjekker at emnefeltet er fylt ut else if(kontaktskjema.emne.value == "" || kontaktskjema.emne.value == null){ alert("Vennligst fyll ut emne"); kontaktskjema.emne.focus(); complete = false; } //sjekker at beskjedfeltet er fylt ut else if(kontaktskjema.beskjed.value == "" || kontaktskjema.beskjed.value == null){ alert("Vennligst skriv inn beskjeden"); kontaktskjema.beskjed.focus(); complete = false; } e.returnValue = complete; } </script> <form action="mail.php" onsubmit="return checkform(event);" method="post" enctype="multipart/form-data" id="kontaktskjema"> <table width="500"> <tr> <td><font size="2">Navn</font></td> <td><input name="navn" type="text" id="navn"/> </td> </tr> <tr> <td><font size="2" >E-post</font></td> <td><input name="email" type="text" id="email"/> </td> </tr> <tr> <td><font size="2" >Emne</font></td> <td><input name="emne" type="text" id="emne"/></td> </tr> <tr> <td><font size="2" >Beskjed</font></td> <td><textarea name="beskjed" cols="30" rows="10" id="beskjed"></textarea></td> </tr> <tr> <td></td> <td ><input name="submit" type="submit" id="submit" value="Send" /> <input name="reset" type="reset" id="reset" value="Nullstill"/> </td> </tr> </table> </form> Endret 12. mai 2007 av Kagee Lenke til kommentar
swj Skrevet 12. mai 2007 Forfatter Del Skrevet 12. mai 2007 Kagee: Takk for engasjement! Jeg får ikke det du har oppdatert til å fungere. Det som nå skjer er at det fortsatt ikke fungerer i IE. I firefox får man opp feilmeldingen, men når man trykker ok, så blir det godkjent likevel. (altså en forværring i forhold til hva jeg hadde.) Beklager om emnefeltet ikke er tilstrekkelig utfylt. Jeg tenkte meg nøye om, men siden det ikke er dekkende så tar jeg gjerne mot forslag til tittel. Skal selvsagt legge inn [LØST] når jeg har fått løst problemet. 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å