Avatar billede cyperangel Nybegynder
10. april 2002 - 21:49 Der er 6 kommentarer og
2 løsninger

validering af dato

jeg har problemer med at få mit script til at validere en dato. den vil gerne validere både email og navn og tlf nummer, men ikke fødselsdags datoen...
Her er den dela f scriptet der volder mig kvaler:

   
    wdd1 = document.minform.dato.value;
    wmm1 = document.minform.maaned.value;
    wyy1 = document.minform.aar.value;
    wdd = wdd1 - 0;
    wmm = wmm1 - 0;
    wyy = wyy1 - 0;
    wdato = checkdato(wdd,wmm,wyy);
   
    switch (wdato) {
        case 1:
            alert("Der er en fejl i dagen.");
            document.minform.dato.focus();
            return false;
           
        case 2:
            alert("Der er en fejl i måneden.");
            document.minform.maaned.focus();
            return false;
           
        case 3:
            alert("Der er en fejl i året.");
            document.minform.aar.focus();
            return false;
           
    }


jeg har delt formen for at spørge om fødselsdagen op i tre input felter, dato, maaned og aar. resten virker fint, indtil jeg indsætter det ovenstående kode, så fejlen må være i det.
På forhånd mange tak
Avatar billede Slettet bruger
10. april 2002 - 21:51 #1
Du mangler at skrive break; efter hver case:

switch (wdato) {
        case 1:
            alert("Der er en fejl i dagen.");
            document.minform.dato.focus();
            return false;
        break;
           
        case 2:
            alert("Der er en fejl i måneden.");
            document.minform.maaned.focus();
            return false;
        break;
           
        case 3:
            alert("Der er en fejl i året.");
            document.minform.aar.focus();
            return false;
        break;
           
    }
Avatar billede cyperangel Nybegynder
10. april 2002 - 21:54 #2
Bare for en god ordens skyld, er der så fejl i det følgende, for det virker stadig ikke, selv ikke med break

funktion checkdato(dd,mm,yy) {

    if (! (mm >= 1 && mm <= 12))
        return 2;
        leap = 31;
    if (mm == 4 || mm == 6 || mm == 9 || mm == 11)
        leap = 30;
    if (! (yy >= 1900 && <= 2100))
        return 3;
    if (mm == 2) {
        leap = 28;
        if (yy % 400 == 0)
            leap = 29;
        else
            if ((!(yy % 100 == 0)) && (yy % 4 == 0))
                leap = 29;
    }
    if (! (dd >= 1 && dd <= leap))
        return 1;
}
Avatar billede erikjacobsen Ekspert
10. april 2002 - 21:56 #3
Ja, der er i hvert fald en åbenlys fejl

if (! (yy >= 1900 && <= 2100))

skal være

if (! (yy >= 1900 && yy<= 2100))
Avatar billede cyperangel Nybegynder
10. april 2002 - 22:01 #4
masser af fejl... Jeg er en ren nybegynder.... problemet lige nu er at det stadig ikke virker.. så her følger hele html filen... måske i kan hjælpe lidt mere?

<html>
<head>
<title>Indmeldelse</title>
<style>
    body    {font-family:Book Antiqua}
    a:link    {text-decoration:none; text-transform:none; color:black}
    a:active    {text-decoration:none; text-transform:none; color:black}
    a:visited    {text-decoration:none; text-transform:none; color:black}
</style>
<script language="JavaScript">

function valider()
{
    w1 = document.minform.fornavn.value;
    if (w1.length < 2) {
        alert("For få bogstaver.\nKrav om mindst 2!");
        document.minform.fornavn.focus();
        return false;
    }


    for (t=0; t<w1.length; t++) {
        w2 = w1.charAt(t);
        if (!(w2 >= "a" && w2 <= "z")|| w2=="æ" || w2=="ø" || w2=="å" || (w2 >="A" && w2<="Z") || w2=="Æ"

|| w2=="Ø" ||  w2=="Å" ) {
            alert("Navn indeholder ulovligt tegn!")
            document.minform.fornavn.focus();
            return false;
        }
    }

    e1 = document.minform.email.value;
    if (e1.length<6) {
        alert("For få tegn!");
        document.minform.email.focus();
        return false;
    }

    e2=e1.split("@");
    if (!(e2.length == 2 && e2[0].length > 0 && e2[1].length > 0)) {
        alert ("E-mail @-fejl!");
        document.minform.email.focus();
        return false;
    }

    e3 = e2[1].split(".")
    e3l = e3.length;
    if (e3l < 2) {
        alert ("E-mail mangler!");
        document.minform.email.focus();
        return false;
    }

    for (t=0; t<e3l; t++){
        if (e3[t].length == 0){
            alert ("E-mail mangler domæaneangivelse");
            document.minform.email.focus();
            return false;
        }
        if (t == (e3l-1)) {
            if (e3[t].length < 2){
                alert ("E-mail topdomæne for kort");
                document.minform.email.focus();
                return false;
            }
        }

    }

    t1 = document.minform.telefon.value;
        if (t1.length < 8) {
                alert("For få tal i nummeret. Skriv venligst mindst 8 tal.");
                document.minform.telefon.focus();
                return false;
            }
        for (t=0; t<t1.length; t++) {
            t2 = t1.charAt(t);
            if (!(t2 >= "0" && t2 <= "9")) {
                  alert("TLF nummeret indeholder ulovligt tegn! Brug venligst kun tal.");
                    document.minform.telefon.focus();
                    return false;
            }
    }

   
    wdd1 = document.minform.dato.value;
    wmm1 = document.minform.maaned.value;
    wyy1 = document.minform.aar.value;
    wdd = wdd1 - 0;
    wmm = wmm1 - 0;
    wyy = wyy1 - 0;
    wdato = checkdato(wdd,wmm,wyy);
   
    switch (wdato) {
        case 1:
            alert("Der er en fejl i dagen.");
            document.minform.dato.focus();
            return false;
        break;

        case 2:
            alert("Der er en fejl i måneden.");
            document.minform.maaned.focus();
            return false;
        break;

        case 3:
            alert("Der er en fejl i året.");
            document.minform.aar.focus();
            return false;
        break;

    }




return true;
}


funktion checkdato(dd,mm,yy) {

    if (! (mm >= 1 && mm <= 12))
        return 2;
        leap = 31;
    if (mm == 4 || mm == 6 || mm == 9 || mm == 11)
        leap = 30;
    if (! (yy >= 1900 && yy <= 2100))
        return 3;
    if (mm == 2) {
        leap = 28;
        if (yy % 400 == 0)
            leap = 29;
        else
            if ((!(yy % 100 == 0)) && (yy % 4 == 0))
                leap = 29;
    }
    if (! (dd >= 1 && dd <= leap))
        return 1;
}
</script>

</head>
<body onLoad="document.minform.fornavn.focus();" bgcolor="#BF8e41">

<table border="0" bgcolor="#FFCC67" width="750">
<tr>
<td width="70%">


<form action="http://localhost/hitme.php" method="POST" name="minform" onSubmit="return valider();">


    <p align="left">Efternavn: &nbsp; &nbsp; &nbsp; <input type="text" maxlength=32" size="16"

Name="fornavn"></p>
    <p align="left">E-mail: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<input type="text" maxlength=32"

size="16" Name="email"></p>
    <p align="left">Telefon: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<input type="text" maxlenght="16"

size=16" Name="telefon">(Eks. 86195226)</p>
    <p align="left">Født: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<input type="text"

maxlenght="2" size=2" Name="dato">Dag&nbsp;(Eks 27)&nbsp; &nbsp;<input type="text" <input type="text"

maxlenght="2" size=2" Name="maaned">Måned&nbsp;(Eks 03 )&nbsp; &nbsp;<input type="text" <input type="text"

maxlenght="4" size=4" Name="aar">År&nbsp;(Eks. 1962)</p>
    <p align="left">Brugernavn:&nbsp;&nbsp;<input type="text" maxlenght="32" size=16"

Name="brugernavn"> Dette er det navn du bliver kendt<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; under når du bruger kaffeklubben.</p>
    <p align="left">Password: &nbsp; &nbsp;&nbsp;<input type="text" maxlenght="32" size=16"

Name="password"> Vælg et password du nemt kan<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; huske.</p>
    <p align="left"><input type="submit" value="send" >&nbsp;&nbsp;&nbsp;&nbsp; <input type="reset"

value="reset" ></p>
    <p>Alle felter skal udfyldes.</p>
</form>
</td>
<td width="30%"><img src="./img/kaffekop2.jpg"></td>
</tr>
<tr>
<td width="100%">Når du har udfyldt og sendt skemaet, lukker du bare dette vindue.</td>
</tr>
</table>
</body>
</html>


mange mange tak :-)
Avatar billede erikjacobsen Ekspert
10. april 2002 - 22:12 #5
Hov - du har accepteret men er ikke færdig.

1) Det er ligegyldigt med break i switch-sætninger når
man laver en return i stedet for

2) Det kunne være en fordel at skrive
    function checkdato(dd,mm,yy) {

Prøv - og fortæl os hvad der mere er galt.
Avatar billede cyperangel Nybegynder
10. april 2002 - 22:15 #6
jeg har startet et nyst spørgsmål om det her, så i kan få nogle flere point fra mig :-)
Avatar billede jakoba Nybegynder
10. april 2002 - 22:16 #7
break efter en return sætning gør vist ikke rigtig nogen forskel.

der skal stå  return 0 tilsidst i din funktion checkdato så den ikke returnere noget tilfældigt hvis ingen af fejlene bliver fundet:

funktion checkdato(dd,mm,yy) {

    if (! (mm >= 1 && mm <= 12))
        return 2;
    leap = 31;
    if (mm == 4 || mm == 6 || mm == 9 || mm == 11)
        leap = 30;
    if (! (yy >= 1900 && yy <= 2100))
        return 3;
    if (mm == 2) {
        leap = 28;
        if (yy % 400 == 0)
            leap = 29;
        else
            if ((!(yy % 100 == 0)) && (yy % 4 == 0))
                leap = 29;
    }
    if (! (dd >= 1 && dd <= leap))
        return 1;
    return 0;
}

mvh JakobA
Avatar billede cyperangel Nybegynder
10. april 2002 - 22:22 #8
Tusinde, tusinde tak JakobA. hvis du skriver en enkelt linie ved det andet spørgsmål jeg har åbnet, så får du alle pointene, det var det der var galt. nu virker det som det skal... mmm dejligt :-) tusinde tak igen
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