følgende kunne sikkert bruges, selvom det nok kunne gøres meget smartere
jeg vil prøve at lære dig hvad der skal til, så sig endelig til hvis du har spørgsmål
først skal vi til vores form, dette gør vi for at spare kode senere hen.Det gør vi ved at skrive:
df = document.forms[0]
Hvis det er den første formular på siden... 1 hvis det er formular 2 etc etc Når javascript selv tæller elementer starter den med at tælle fra 0
Det næste er at vi skal have lavet en funktion vi kan kalde for at validere datoen....
function valiDate(){ d = parseInt(df.dag.options[df.dag.selectedIndex].text) /* text hvis det er udenfor option taggen, value hvis det er i value attributten Vi bruger parseInt til at lave værdien fra selectboxen om til et tal (hel tal, men det er ligegyldigt) */ m = parseInt(df.maaned.options[df.maaned.selectedIndex].text)
maxMonths = (m==1|m==3|m==5|m==7|m==8|m==10|m==12)?31:(m==2)?27:30 /*Den ovenstaaende linie checker for om det er en af de første 31 dages maaneder, i saa fald 31, ellers checkes om maaneden er nummer 2, saa er det 27 dage (der tages ikke hoejde for skudaar) */ switch (maxMonths){ case 31: return true //her behoever vi ikke tjekke mere break;
case 30: if(d>30){ alert('denne maaned har kun 30 dage') return false }else{ return true } break;
case 27: if(d>27){ alert("februar har kun 27 dage") return false }else{ return true } break; }
}
så kan du i din <form> tag skrive <form onsubmit="return valiDate()">
Hvis det nu er en formular, der skal videre til opret.php, hvordan fletter jeg så det ind? Lige nu står det bare under action i <form>-taggen, men så vliderer den jo ikke.
Har selv denne liggende, som bruger et Date-objekt til validering, for så slipper jeg selv for at tage stilling til skudår, lange og korte måneder m.m.m.
<script language='javascript' type='text/javascript'> function checkDato( dmy ) { var dag = parseInt(dmy[0],10); var maaned = parseInt(dmy[1],10)-1; var dato = new Date(parseInt(dmy[2]), maaned, dag ); alert(dag+" "+maaned+" "+dato.getDate()+" "+dato.getMonth()); if (dato.getDate() == dag && dato.getMonth() == maaned) { return true; } return false; };
function valider (formObjekt) { var dmy = [formObjekt.day.options[formObjekt.day.selectedIndex].value, formObjekt.month.options[formObjekt.month.selectedIndex].value, formObjekt.year.options[formObjekt.year.selectedIndex].value]; if (!checkDato(dmy)) { alert("den indtastede dato duer ikke.\nBenyt formatet DD-MM-YYYY"); return false; } return true; }; </script>
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.