Avatar billede donslund Nybegynder
25. juni 2004 - 20:34 Der er 14 kommentarer og
1 løsning

Datovalidering i forhold til Dags Dato

Kan det passe, at nedenstående ikke accepterer dags dato?

if (d.getTime() < nu.getTime()) {
    alert("Startdatoen skal være nyere end dags dato!");
    return false;
      }
Avatar billede skovenborg Nybegynder
25. juni 2004 - 20:51 #1
det kommer an på hvordan du laver d og nu datoerne.

Hvis nu blot bliver lavet sådan her fx:
nu = new Date(); //Tager det nuværende tidspunkt
så kan det rigtignok give lidt problemmer. Jeg regner her med at startdatoen blot er lavet som en almindelig dato, og dermed vil klokkeslettet blive 00:00:00 - men dags dato vil jo have et andet klokkeslet som er lidt højere end startdatoen. Hvis så dags dato og startdato er sat til samme dag vil dagsdato altså være lidt større når du tester med getTime() (som jo tager antal millisekunder)
Avatar billede donslund Nybegynder
25. juni 2004 - 20:53 #2
Jeg tester først på gyldigheden og derefter på om den er nyere eller lig med dags dato.

var dag=document.opret.start_dag.value;
    var maaned=document.opret.start_maaned.value;
    var aar=document.opret.start_aar.value;
    if (dag != "00" || maaned != "00" || aar != "0000") {
      d=new Date(parseInt(aar, 10), parseInt(maaned, 10) - 1, parseInt(dag, 10));
      if (d.getFullYear() != parseInt(aar, 10) || (d.getMonth() + 1) != parseInt(maaned, 10) || d.getDate() != parseInt(dag, 10)) {
        alert("Datoen er ikke gyldig!");
        return false;
      }
      nu=new Date();
      if (d.getTime() < nu.getTime()) {
    alert("Startdatoen skal være nyere end dags dato!");
    return false;
      }
    }
Avatar billede skovenborg Nybegynder
25. juni 2004 - 20:55 #3
du kan prøve at skrive:
nu=new Date();
ligenu = new Date(nu.getYear(),nu.getMonth(),nu.getDate);
if (d.getTime() < ligenu.getTime()) {
    alert("Startdatoen skal være nyere end dags dato!");
    return false;
      }

Eller hvis det nu.getFullYear() hvis det andet ikke virker
Avatar billede donslund Nybegynder
25. juni 2004 - 21:02 #4
Med det du skriver, så lukker den hvad som helst ind. Også datoen i går.
Avatar billede skovenborg Nybegynder
25. juni 2004 - 21:08 #5
hov, der skulle også stå:
ligenu = new Date(nu.getYear(),nu.getMonth(),nu.getDate());
ved ikke om det kunne hjælpe lidt på det ;-)
Avatar billede donslund Nybegynder
25. juni 2004 - 21:15 #6
Næ, den lukker staigvæk d. 24. juni i gennem
Avatar billede skovenborg Nybegynder
25. juni 2004 - 21:23 #7
så prøv istedet:
ligenu = new Date(nu.getFullYear(),nu.getMonth(),nu.getDate());
Avatar billede donslund Nybegynder
25. juni 2004 - 21:26 #8
Nix desværre.
Avatar billede skovenborg Nybegynder
25. juni 2004 - 21:41 #9
mærkeligt - lige umiddelbart virker det fint her, hvis du skriver:
<script type="text/javascript">
function dato() {var dag=document.opret.start_dag.value;
    var maaned=document.opret.start_maaned.value;
    var aar=document.opret.start_aar.value;
    if (dag != "00" || maaned != "00" || aar != "0000") {
      d=new Date(parseInt(aar, 10), parseInt(maaned, 10) - 1, parseInt(dag, 10));
      if (d.getFullYear() != parseInt(aar, 10) || (d.getMonth() + 1) != parseInt(maaned, 10) || d.getDate() != parseInt(dag, 10)) {
        alert("Datoen er ikke gyldig!");
        return false;
      }
      nu=new Date();
      ligenu = new Date(nu.getFullYear(),nu.getMonth(),nu.getDate());
      if (d.getTime() < ligenu.getTime()) {
    alert("Startdatoen skal være nyere end dags dato!");
    return false;
      }
    }
    }
</script>

og så skrive:
<form name="opret">
Dag: <input type="text" name="start_dag" />
Måned:<input type="text" name="start_maaned" />
År:<input type="text" name="start_aar" />
<input type="button" onclick="dato();" />

</form>
Avatar billede skovenborg Nybegynder
25. juni 2004 - 21:41 #10
kunne du så ikke skrive din kode eller et link til en side (helst et link hvis det ikke er for meget besvær - kode fylder så meget ;-)
Avatar billede donslund Nybegynder
25. juni 2004 - 22:38 #11
Der var en besked jeg ikke helt fik sendt af sted. Det virker umiddelbart også her nu. Jeg tester lige lidt videre.
Avatar billede boomshanka Nybegynder
07. juli 2004 - 21:42 #12
Det kan godt være det ikke er så relevant mere, hvis du har løst det. Men har du prøvet at kigge på den her ("One inconsistency"):

http://developer.netscape.com/viewsource/goodman_dateobject.html#incon
Avatar billede donslund Nybegynder
07. juli 2004 - 22:15 #13
tak for det. Det vil jeg læse. Men problemet er løst.
Skovenborg. Smider du et svar?
Avatar billede skovenborg Nybegynder
08. juli 2004 - 21:37 #14
værgso' så :-)
Avatar billede skovenborg Nybegynder
08. juli 2004 - 22:15 #15
og tak for points :-)
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

IT-JOB