Avatar billede dengalepose.dk Nybegynder
06. november 2001 - 23:41 Der er 11 kommentarer og
1 løsning

Validering af fødselsdag

Hvad er der galt ?

Er der nogen der gider at prøve ?

  //test af fødselsdag
 
  var fejl = false;


    var tx = document.form1.fodt.value
   
    if ( tx.test( /^\\d\\d.\\d\\d.\\d{4}$/ ) )
        var dag = parseInt( tx.substring(0,2), 10 );
        if ( dag < 1 || dag > 31 ) {
            alert( \"forkert månedsdag. gyldige værdier er 01..31\" );
            fejl = true;
        }
        var maaned = parseInt( tx.substring(3,5), 10 );
        if ( maaned<1 || maaned>12 ) {
            alert( \"forkert måned. gyldige værdier er 01..12\" );
            fejl = true;
        }
        var aar = parseInt( tx.substring(6,10), 10 );
        if ( aar < 1900 || aar > 1999 ) {
            alert( \"forkert år. gyldige værdier er 1900..1999\" );
            fejl = true;
           
    }
    else {
        alert( \"forkert dato format. brug  dd.mm.åååå\" )
        return false;
    }
   
    //slut på test af fødselsdag

DGP
Avatar billede dengalepose.dk Nybegynder
06. november 2001 - 23:45 #1
Der skulle være en fejl i første if sætning... -
Det skriver Homesite i hvert fald.

DGP
Avatar billede dengalepose.dk Nybegynder
06. november 2001 - 23:48 #2
Det er et script jakoba har lavet, så det kan være han har styr på fejlen ?
Avatar billede dengalepose.dk Nybegynder
07. november 2001 - 00:17 #3
Det skulle være denne linje :

if ( tx.test( /^\\d\\d.\\d\\d.\\d{4}$/ ) )

DGP
Avatar billede jakoba Nybegynder
07. november 2001 - 00:21 #4
nae, men hvis han bliver presset hårdt nok kan han da slå op op manualen og finde fejlen :-))
det burde være enten:
    if ( /^\\d\\d.\\d\\d.\\d{4}$/.test( tx ) );  // regexp.test( string )
eller
    if ( tx.match( /^\\d\\d.\\d\\d.\\d{4}$/ ) );  // string.match( regexp )

den nederste er nok sikrest.
du skal ikke betale en gang til for det svar.

mvh JakobA

Avatar billede fri-hash Nybegynder
07. november 2001 - 00:21 #5
skal den første if være uden om de andre if\'er??
så mangler der en starttuborg
Avatar billede fri-hash Nybegynder
07. november 2001 - 00:23 #6
og en slut}
Avatar billede dengalepose.dk Nybegynder
07. november 2001 - 00:35 #7
Tak,tak - TAK.

Hvis du ikke vil ha` point for det her, vil du så tjene et par lette her :

http://www.eksperten.dk/spm/130588 ?

PS : Jeg stopper snart mine valideringsspørgsmål, da jeg snart er færdig opgaven hvori det skal bruges... ;-))

DGP
Avatar billede jakoba Nybegynder
07. november 2001 - 00:40 #8
Fri-hash har nu ret med den tuborg i begge ender:

  if ( tx.test( /^\\d\\d.\\d\\d.\\d{4}$/ ) )  {  // indsat starttuborg
        var dag = parseInt( tx.substring(0,2), 10 );
        if ( dag < 1 || dag > 31 ) {
            alert( \"forkert månedsdag. gyldige værdier er 01..31\" );
            fejl = true;
        }
        var maaned = parseInt( tx.substring(3,5), 10 );
        if ( maaned<1 || maaned>12 ) {
            alert( \"forkert måned. gyldige værdier er 01..12\" );
            fejl = true;
        }
        var aar = parseInt( tx.substring(6,10), 10 );
        if ( aar < 1900 || aar > 1999 ) {
            alert( \"forkert år. gyldige værdier er 1900..1999\" );
            fejl = true;
        }                        // indsat sluttuborg
    }
    else {
        alert( \"forkert dato format. brug  dd.mm.åååå\" )
        return false;
    }
Avatar billede dengalepose.dk Nybegynder
07. november 2001 - 00:51 #9
Det virker fint, nu hvor det ser sådan ud :

  //test af fødselsdag
 
  var fejl = false;


    var tx = document.form1.fodt.value
   
      if ( tx.match( /^\\d\\d.\\d\\d.\\d{4}$/ ) ); 
   
        var dag = parseInt( tx.substring(0,2), 10 );
        if ( dag < 1 || dag > 31 ) {
            alert( \"Indtast et tal mellem 1 og 31\" );
            fejl = true;
        }
        var maaned = parseInt( tx.substring(3,5), 10 );
        if ( maaned<1 || maaned>12 ) {
            alert( \"Indtast et tal mellem 1 og 12\" );
            fejl = true;
        }
        var aar = parseInt( tx.substring(6,10), 10 );
        if ( aar < 1900 || aar > 2001 ) {
            alert( \"Du er ikke over 100 !!!\" );
            fejl = true;
           
    }
   
   
    //slut på test af fødselsdag
 
Men der er jo også flere valideringer. Kan det kan noget med det at gøre !?!
Summa summarum : Det virker ihvertfald som det skal :-))
Avatar billede jakoba Nybegynder
07. november 2001 - 01:04 #10
din linie
      if ( tx.match( /^\\d\\d.\\d\\d.\\d{4}$/ ) );
er en afsluttet javascript if sætning der ikke gør noget hvis testen går godt, og heler ikke gør noget hvis testen går galt.

prøv at teste med en ulovlig dato som fx
      \"21m12k1976\"
den glider fint igennem testen.
Avatar billede nute Nybegynder
07. november 2001 - 10:05 #11
det sikreste (og aller peneste) er jo å forhindre at brukeren angir noe annet enn gyldige datoer inn i feltene. Benytt dropdown lister med dag/måned/år verdier

/nute
Avatar billede olebole Juniormester
07. november 2001 - 12:08 #12
<ole>
nute >> Nemlig!  ;o)
/mvh
</bole>
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