Avatar billede mmmtm Nybegynder
02. august 2005 - 12:46 Der er 8 kommentarer og
1 løsning

Script til validering af dato

Jeg skal bruge et script der kan teste en dato (dd-mm-aaaa). Datoen skal være fremtidig og må max være dags dato + een måned.
Avatar billede roenving Novice
02. august 2005 - 13:23 #1
Er een måned så fra dato til dato eller er det 30 eller 31 dage ?-)
Avatar billede mmmtm Nybegynder
02. august 2005 - 13:50 #2
fra dato til dato, altså nuv. måned +1 er helt fint.
Avatar billede roenving Novice
02. august 2005 - 14:01 #3
<script type="text/javascript">
var dato = "02-09-2005";//denne skal selvfølgelig slettes og funktionen aktiveres !-)

//function validDate(dato){
  var nu = new Date();
  dato = dato.split("-");
  var datoD = new Date(+dato[2],(+dato[1] + 1),+dato[0]);
  if(datoD.getTime() - nu.getTime() < 0 || +dato[2] > nu.getFullYear() || datoD.getMonth() > nu.getMonth + 1 || datoD.getMonth() > nu.getMonth() && datoD.getDate() > nu.getDate()){
    alert("Ugyldig dato !-)\nDatoen skal ligge indenfor den næste måned.");
  }
//}
</script>
Avatar billede roenving Novice
02. august 2005 - 14:06 #4
Argh, der var en blunder omkring nytår plus nogle andre ...

If-sætningen bliver så sådan:

  if(datoD.getTime() - nu.getTime() < 0 || +dato[2] > nu.getFullYear() && +dato[1] != 1 || datoD.getMonth() > (nu.getMonth() + 1) % 12 || datoD.getMonth() > nu.getMonth() && datoD.getDate() > nu.getDate()){
Avatar billede mmmtm Nybegynder
02. august 2005 - 14:37 #5
Det ser godt ud - men der bliver (i praksis) lagt 2 til månedsnummeret (dato[1]) ???
Avatar billede roenving Novice
02. august 2005 - 14:40 #6
Hov, datoD skal have en trukket fra ...

  var datoD = new Date(+dato[2],(+dato[1] - 1),+dato[0]);

I javascript er den værdi, man får fra .getMonth() at ligne med et index til de forskellige måneder, og da bl.a. arrays er nul-baserede, betyder det, at månederne nummereres fra 0 (januar) til 11 (december !-)
Avatar billede mmmtm Nybegynder
02. august 2005 - 16:08 #7
Det ser ud til at funke. Jeg kom dog til at skrive forkert med at datoen skal være fremtidig - det må godt være dags dato og jeg syntes at jeg burde kunne korrigere dette ved blot at tilføje et "=" det rette sted, men den går vist ikke (eller også er det feriehjerne). Smid under alle omstændigheder et svar, så du kan få dine velfortjente point - og tak :-)
Avatar billede roenving Novice
03. august 2005 - 10:16 #8
Hrm, tjah, næeh ...

Da datoen, som skal checkes oprettes som kl. 0:00, kan vi bare ændre den, så den sættes til 23:59.999:

  var datoD = new Date(+dato[2],(+dato[1] - 1),+dato[0],23,59,999);

Velbekomme '-)
Avatar billede roenving Novice
21. november 2005 - 22:56 #9
-- og tak for point ;~}
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