Avatar billede ullers Nybegynder
17. juni 2002 - 14:42 Der er 3 kommentarer og
1 løsning

validering af dato

Hej derude!
Jeg har brug for et script, der kan validere en form hvor indtastning af dato skal se således ud: yyyy-mm-dd.
Hvis ikke den indtastede syntaks er rigtig, skal der komme en besked herom.
Avatar billede jakoba Nybegynder
17. juni 2002 - 15:16 #1
<script type='text/javascript'> <!--

function checkDato( datostreng ) {
    var format = /^\d\d\d\d-\d\d-\d\d$/; // ønsket format
    if ( format.test( datoStreng ) {
                          // formatet er korrekt.
        var aar    = parseInt( datoStreng.substring(0,4), 10 ); //årstal
        var maaned = parseInt( datoStreng.substring(5,7), 10 ); //manenr
        var dag    = parseInt( datoStreng.substring(8,10), 10 ); //dag
        var dato = new Date( aar, maaned-1, dag );
        if (  dato.getDate() == dag
            && dato.getMonth == maaned-1
          ) {
            return true;  // der blev indtastet en lovlig dato
        }
    }
    return false;  // galt format eller ulovlig dato
}; //end checkDato( string ) -> boolean


function valider ( formObjekt ) {
    if ( ! checkDato( formObjekt.datoFeltNavn.value ) {
        alert( "den indtastede dato duer ikke.\nBenyt formatet YYYY-MM-DD" );
        formObjekt.datoFeltNavn.focus();
        return false;
    }

//  ... evt andre tests

    return true;  // ingen test fejlede, så alt er ok.
}; //end valider( Form object ) -> boolean

// --> </script>


nede i din form kommandoe skriver du så;
  <form ... onsubmit="return valider( this );">

  Dato: <input type='text' name="datoFeltNavn" value="">

... andre felter

  </form>

mvh JakobA
Avatar billede jakoba Nybegynder
17. juni 2002 - 15:17 #2
Ups. jeg har stavet datoStreng med lille s mindst eet sted, det skal være ens allevegne.
Avatar billede ullers Nybegynder
17. juni 2002 - 18:42 #3
Har gjordt følgende, hele filen kalder jeg for form.htm:
Intet virker endnu, kan du se hvad jeg gør forkert?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<script type='text/javascript'> <!--

function checkDato( datoStreng ) {
    var format = /^\d\d\d\d-\d\d-\d\d$/; // ønsket format
    if ( format.test( datoStreng ) {
                          // formatet er korrekt.
        var aar    = parseInt( datoStreng.substring(0,4), 10 ); //årstal
        var maaned = parseInt( datoStreng.substring(5,7), 10 ); //manenr
        var dag    = parseInt( datoStreng.substring(8,10), 10 ); //dag
        var dato = new Date( aar, maaned-1, dag );
        if (  dato.getDate() == dag
            && dato.getMonth == maaned-1
          ) {
            return true;  // der blev indtastet en lovlig dato
        }
    }
    return false;  // galt format eller ulovlig dato
}; //end checkDato( string ) -> boolean


function valider ( formObjekt ) {
    if ( ! checkDato( formObjekt.datoFeltNavn.value ) {
        alert( "den indtastede dato duer ikke.\nBenyt formatet YYYY-MM-DD" );
        formObjekt.datoFeltNavn.focus();
        return false;
    }

//  ... evt andre tests

    return true;  // ingen test fejlede, så alt er ok.
}; //end valider( Form object ) -> boolean

// --> </script>




</head>
<body>
<form method=post action="form.htm"  onsubmit="return valider(this);">
<input type="text" name="datoFeltNavn"><br>
<input type="submit">
</form>
</body>
</html>
Avatar billede jakoba Nybegynder
17. juni 2002 - 18:53 #4
Der var også 3 linier med fejl i (markeret nedenfor):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<META NAME="Generator" CONTENT="Stone's WebWriter 3">
<script type='text/javascript'> <!--

function checkDato( datoStreng ) {
    var format = /^\d\d\d\d-\d\d-\d\d$/; // ønsket format
    if ( format.test( datoStreng ) ) {          // manglede en slutparentes
                          // formatet er korrekt.
        var aar    = parseInt( datoStreng.substring(0,4), 10 ); //årstal
        var maaned = parseInt( datoStreng.substring(5,7), 10 ); //manenr
        var dag    = parseInt( datoStreng.substring(8,10), 10 ); //dag
        var dato = new Date( aar, maaned-1, dag );
alert ( dato );
        if (  dato.getDate() == dag
            && dato.getMonth() == maaned-1  // manglede () efter getMonth
          ) {
            return true;  // der blev indtastet en lovlig dato
        }
    }
    return false;  // galt format eller ulovlig dato
}; //end checkDato( string ) -> boolean


function valider ( formObjekt ) {
    if ( ! checkDato( formObjekt.datoFeltNavn.value ) ) {          // manglede en slutparentes
        alert( "den indtastede dato duer ikke.\nBenyt formatet YYYY-MM-DD" );
        formObjekt.datoFeltNavn.focus();
        return false;
    }

//  ... evt andre tests

    return true;  // ingen test fejlede, så alt er ok.
}; //end valider( Form object ) -> boolean

// --> </script>

</head>
<body>
<form method=post action="form.htm"  onsubmit="return valider(this);">
<input type="text" name="datoFeltNavn"><br>
<input type="submit">
</form>
</body>
</html>
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