20. september 2006 - 19:08
Der er
6 kommentarer og 1 løsning
validering af dato og validering af tid
Validering af dato: Her har jeg brug for at hvis folk indtaster 20092006 skal den gå ind og skrive 20-09-2006 eller eks. 01092006 skal rettes til 01-09-2006. Validering af til: Her har jeg brug for at hvis folk indtaster 0900 skal den gå ind og skrive 09:00 eller eks. 1200 skal rettes til 12:00.
Annonceindlæg fra Axcess Nordic
20. september 2006 - 23:57
#1
Sidste del: <form> <input type="text" name="Tid" onchange="this.value = retTid(this.value);" onkeyup="this.value = doRemoveIllegal(this.value);"> </form> <script language=javascript> function retTid(strIn){ if (strIn.indexOf(":") == -1){ strIn = "0000" + strIn; strIn = strIn.substring(strIn.length - 4); return strIn.substring(0, 2) + ":" + strIn.substring(2); }else{ return strIn; } } function doRemoveIllegal(strIn){ return strIn.replace(/[^\d ^:]/gi, ""); } </script> På onchange sættes et kolon ind tredjesidst, hvis der intet kolon findes På onkeyup fjernes alle tegn der ikke er tal eller kolon Den med datoerne kan jeg ikke lige se hvordan man laver. Men jeg finder noget andet til dig.
21. september 2006 - 00:00
#2
<form> <input name="datoField" onchange="checkDato(this);"> </form> <script language=javascript> function checkDato(objField){ var isValid = true var arrDato = objField.value.split("-"); if (arrDato.length != 3) isValid = false; if (isValid) if (arrDato[2].length != 4) isValid = false; for (i=0;i<arrDato.length;i++){ if (parseInt(arrDato[i], 10) != arrDato[i]) isValid = false; } if (!isValid){ alert("Datoen skal have formatet dd-mm-åååå"); objField.focus(); return (false); } var testDate = new Date(arrDato[2], arrDato[1] - 1, arrDato[0]); if (testDate.getDate() != arrDato[0]) isValid = false; if (testDate.getMonth() != arrDato[1] - 1) isValid = false; if (testDate.getYear() != arrDato[2]) isValid = false; if (!isValid){ alert("Ugyldig dato"); objField.focus(); return (false); } } </script>
21. september 2006 - 00:50
#3
Hej Idanielsen er der nogen grund til at dato check skal hedde datofield, altså i formen. Og funktionen med tid kan jeg ikke få til at fungere..?
21. september 2006 - 11:17
#4
-- og hvis du gerne vil have den, så den gør det, du spørger om, kan det også sagtens laves, men der skal jo selvfølgelig så bruges noget kode til at teste datoens/tidens validitet også !-)
21. september 2006 - 12:28
#5
I begge tilfælde virker funktionerne ligemeget hvad felterne hedder Du har ret, den med tid virker ikke nu, fordi onkeyup konflikter med onchange, det havde jeg ikke set. Prøv dette: <form> <input type="text" name="Tid" onchange="this.value = doRemoveIllegal(this.value); this.value = retTid(this.value);"> </form> <script language=javascript> function retTid(strIn){ if (strIn.indexOf(":") == -1){ strIn = "0000" + strIn; strIn = strIn.substring(strIn.length - 4); return strIn.substring(0, 2) + ":" + strIn.substring(2); }else{ return strIn; } } function doRemoveIllegal(strIn){ return strIn.replace(/[^\d ^:]/gi, ""); } </script>
23. september 2006 - 23:38
#6
Hvad skal man gøre hvis man skal have en række forskellige funktioner ved Onchange ? er det overhovedet muligt ?
25. september 2006 - 23:20
#7
Sagtens, du skal bare kalde funktioner efter hinanden, f.eks. onchange="minFunktion1();minFunktion2();minFunktion3();minFunktion4()"
Vi tilbyder markedets bedste kurser inden for webudvikling