Avatar billede misbruger Nybegynder
01. oktober 2002 - 17:45 Der er 11 kommentarer og
1 løsning

Datovalidering

Jeg har to input felter:

<form method="post" action="somePage.htm">
  <input type="text" name="dateFrom">
  <input type="text" name="dateTo">
  <input type="submit" name="Submit">
</form>

Jeg skal bruge et script der validere om hvorvidt dateFrom er mindre end dateTo, samt at dateTo ikke er efter dags dato.....

Please help....!
Avatar billede Slettet bruger
01. oktober 2002 - 17:46 #1
Hvad er formatet af de indtastede datoer?
Avatar billede misbruger Nybegynder
01. oktober 2002 - 17:51 #2
dd.mm.yyyy
Avatar billede Slettet bruger
01. oktober 2002 - 17:56 #3
Nå, nu prøver jeg alligevel. Formatet er i dette eksempel 01/10-2002.

<script>
function valDato(frm) {
fd = frm.dateFrom.value;
td = frm.dateTo.value;
fra = new Date(parseInt(fd.substring(7, 11), 10), parseInt(fd.substring(3, 5), 10) - 1, parseInt(fd.substring(0, 2), 10));
til = new Date(parseInt(td.substring(7, 11), 10), parseInt(td.substring(3, 5), 10) - 1, parseInt(td.substring(0, 2), 10));
if (fra.getTime() >= til.getTime()) {
alert("Fra-datoen skal være før til-datoen");
return false;
}
nu = new Date();
nu.setHours(0);
nu.setMinutes(0);
nu.setSeconds(0);
if (til.getTime() > nu.getTime()) {
alert("Til-datoen skal være efter dags dato!");
return false;
}
return true;
}
</script>

I formen:

<form method="post" action="somePage.htm" onSubmit="return valDato(this);">
Avatar billede Slettet bruger
01. oktober 2002 - 17:56 #4
OK, det fungerer fint sådan der så!
Avatar billede Slettet bruger
01. oktober 2002 - 18:03 #5
Ups, disse to linjer:

fra = new Date(parseInt(fd.substring(7, 11), 10), parseInt(fd.substring(3, 5), 10) - 1, parseInt(fd.substring(0, 2), 10));
til = new Date(parseInt(td.substring(7, 11), 10), parseInt(td.substring(3, 5), 10) - 1, parseInt(td.substring(0, 2), 10));

... skal skiftes ud med:

fra = new Date(parseInt(fd.substring(6, 10), 10), parseInt(fd.substring(3, 5), 10) - 1, parseInt(fd.substring(0, 2), 10));
til = new Date(parseInt(td.substring(6, 10), 10), parseInt(td.substring(3, 5), 10) - 1, parseInt(td.substring(0, 2), 10));
Avatar billede misbruger Nybegynder
01. oktober 2002 - 18:03 #6
der er lige to ting der ikke spiller.....

dateTo kan sagtens være efter dags dato, samt begge felter kan være tomme...!
Avatar billede misbruger Nybegynder
01. oktober 2002 - 18:05 #7
...en ting :)

begge felter kan være tomme også uafhængigt af hinanden...!
Avatar billede Slettet bruger
01. oktober 2002 - 18:05 #8
Du skrev de i spørgsmålsteksten, at dateTo ikke måtte være efter dags dato??
Avatar billede misbruger Nybegynder
01. oktober 2002 - 18:09 #9
jep den er også fin....!
Avatar billede misbruger Nybegynder
01. oktober 2002 - 18:09 #10
men jeg mener at felter ikke må være tomme...! :)
Avatar billede misbruger Nybegynder
01. oktober 2002 - 18:12 #11
men den har jeg fikset.... Takker ærbødigt!
Avatar billede Slettet bruger
01. oktober 2002 - 18:12 #12
Så skal det se således ud:

function valDato(frm) {
fd = frm.dateFrom.value;
td = frm.dateTo.value;
if (fd != "")
fra = new Date(parseInt(fd.substring(7, 11), 10), parseInt(fd.substring(3, 5), 10) - 1, parseInt(fd.substring(0, 2), 10));
if (td != "")
til = new Date(parseInt(td.substring(7, 11), 10), parseInt(td.substring(3, 5), 10) - 1, parseInt(td.substring(0, 2), 10));
nu = new Date();
nu.setHours(0);
nu.setMinutes(0);
nu.setSeconds(0);
if (td != "" && til.getTime() > nu.getTime()) {
alert("Til-datoen skal være efter dags dato!");
return false;
}
if (fd != "" && fra.getTime() >= til.getTime()) {
alert("Fra-datoen skal være før til-datoen");
return false;
}
return true;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester