08. november 2002 - 10:03
Der er
2 kommentarer og
1 løsning
Tjekke om et felt indeholder
en dato, altså
2 tal så bindestreng så 2 tal så bindestreng så 2 tal
Ex. 23-02-2002
Og tallene må selvfølgelig ikke være højere end en dato kan være!
Hvordan ser et sådant script ud??
mvh kledal
Slettet bruger
08. november 2002 - 10:18
#1
der er denne: kører på : dd:mm:åååå
<script language="JavaScript">
<!--
function validatedate(f) {
if (f.dato.value=="") {
alert("Du skal skrive en dato");
return false;
}
if (f.dato.value.length!=10) {
alert("Datoen skal skrives på formen DD-MM-ÅÅÅÅ");
return false;
}
if (f.dato.value.charAt(2)!="-" || f.dato.value.charAt(5)!="-") {
alert("Datoen skal skrives på formen DD-MM-ÅÅ");
return false;
}
var dd=parseInt(f.dato.value.substring(0,2),10);
var mm=parseInt(f.dato.value.substring(3,5),10);
var yyyy=parseInt(f.dato.value.substring(6,10),10);
if (mm<1 || mm>12 || dd<1 || dd>31) {
alert("Ulovlig dato");
return false;
}
d=new Date(yyyy,mm-1,dd,0,0,0,0);
if (d.getFullYear()!=yyyy || (d.getMonth()+1)!=mm || d.getDate()!=dd) {
alert("Ulovlig dato2");
return false;
}
return true;
}
//-->
</script>
mvh.
Questis.dk
Slettet bruger
08. november 2002 - 16:31
#2
Lidt smartere (synes jeg):
function tjekDato(dat) {
reg = /^\d{2}-\d{2}-\d{4}$/;
if (!dat.match(reg)) {
alert("Datoen skal være i formatet dd-mm-åååå!");
return false;
}
dag = parseInt(dat.substring(0, 2), 10);
maa = parseInt(dat.substring(3, 5), 10) - 1;
aar = parseInt(dat.substring(6, 10), 10);
md = new Array(31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if (maa < 1 || maa > 11) {
alert("Månednummeret skal være imellem 1 og 12 (og det ved du jo også godt)!");
return false;
}
if (maa == 1)
md[1] = (aar % 400 == 0 || (aar % 4 == 0 && aar % 100 != 0)) ? 29 : 28;
if (dag == 0 || dag > md[maa]) {
alert("Datoen er forkert!");
return false;
}
return true;
}