05. januar 2004 - 19:20Der er
12 kommentarer og 1 løsning
Validering af form
Ja, bare roligt jeg har kigget på andres spørgsmål, men ingen ser ud til at ville have det samme som mig :)
Det jeg mangler er et script der tjekker om der står noget i alle formens felter, og så skriver en besked lige ved siden af submit knapper hvis de ikke har, og hvis de har udflydt alt skal siden bare fortsætte med at sende formlen. Men det der er vigtigt er at den kommer med en besked lige ved siden af submit knappen, og ikke en "pop up" :)
Hvis nogen gider lave et exempel, med det hele, så skal jeg nok få kodet det, så det passer til mit script ;)
ja det er super ;) Nu har jeg ændret det til: <SCRIPT text="text/JavaScript"> <!--
function validate(f) { // checkpoint-boolean-switch-ting: var ok = "ja";
// navnene på de felter der *SKAL* udfyldes: var skal_udfyldes = new Array("Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "Q10", "Q11", "Q12", "Q13", "Q14", "Q15", "Q16", "Q17", "Q18", "Q19", "Q21", "Q22", "Q23", "Q24", "Q25", "Q26", "Q27", "Q28", "Q29", "Q30");
el = f.elements; for(var i=0;i<el.length - 1;i++){ for (var a=0; a < skal_udfyldes.length; a++) { if ( (el[i].name == skal_udfyldes[a]) && (el[i].value.length == 0) && (el[i].type == "text", "hidden") ) { ok = "nej"; } } }
if (ok == "nej") { document.getElementById("msg").innerHTML = " <b>Du skal svare på alle spørgsmål!</b>"; return false; } else { return true; }
} //--> </SCRIPT> Men tænkte på om det er muligt at lave det lidt mere "individuelt" hvis man kan sige sådan, sådan at man f.eks. skal have @ af med i emailen og sådaN? :) Og evt. en lille hjælp til HVOR de har glæmt at udfylde, min form er MEGET lang, så hvis man kunne skrive hvor du havde glæmt at svare ville det være super, kan det lade sig gøre?
Denne udgave skriver hvilke felter det er der mangler, plus den check om der er et "@" i email feltet. I eksemplet er Email feltet "Q5".. det skal manuelt rettes til her: if (f.Q5.value.indexOf("@") == -1) mangler += "- Email<br>";
Det nye ved denne udgave, er formatet af skal_udfyldes arrayen.. formatet er: "Titel 1", "FeltNavn 1", "Titel 2", "Feltnavn 2"
F.eks.: "Fornavn", "navnet på feltet hvor Fornavn skal skrives", "Efternavn", "navnet på feltet hvor Efternavn skal skrives".
Fra starten af, var det sådan at man havde 2 arrays, med 30 felter hver :) 1 array til feltnavne, og 1 array til "title".. det ville være svært for dig at holde styr, så jeg lavede den om..
Endnu en tilføjelse er at, manglede felter vises i en boks (uden ramme). Dvs de er samme sted lodret/vertikalt. Det sker her: <span id="msg" style="position: absolute"></span> Hvis du ikke synes om det, fjerner du bare: style="position: absolute"
Alle navnene i script er case-sensitive, dvs der er forskel på store og små bogstaver. F.eks: "Hej" er ikke det samme som "hEJ", "HeJ", "HEj", osv.. Husk det! :)
// 1) Ret "Q5" til det korrekt feltnavn til Email feltet. // 2) Ret fejlmeddelelsen for "Email". I dette eksempel er det "Email" (case-sensitive) if (f.Q5.value.indexOf("@") == -1 && mangler.indexOf("Email") == -1) mangler += "- Email<br>";
if (mangler != "") { mangler = mangler.substring(0, mangler.length - 4); // fjern det sidste "<br>" mangler = "Du mangler at udfylde følgende felter:<br>" + mangler; document.getElementById("msg").innerHTML = mangler; //" <b>Du skal svare på alle spørgsmål!</b>"; return false; } else { return true; }
Tror der er en fejl, se mit script på www.goog.dk/mylove/test.php heh ved godt den er lidt skumler :P Men altså den tager ikke q30 med og det har jeg altså taget med i koden :S
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.