Avatar billede jakemedes Nybegynder
04. juni 2002 - 11:18 Der er 8 kommentarer og
1 løsning

formvalidering - fødselsdato

hej jeg sidder og nosser med en formvalidering, der skal tage højde på dato - måned - år og skudår

mvh
jakemedes
Avatar billede jakoba Nybegynder
04. juni 2002 - 11:54 #1
var dag = 22    // tal for månedsdag (1..31)
var maaned = 5  // tal for måned (1..12) 
var aar = 1902  // tal for årtal  (fire cifre tak)

var dato o new Date( aar, maaned-1, dag );
if ( dag != dato.getDate() || maaned != (dato.getMonth()+1) ) {
    alert( "beklager, den dato findes ikke" );
}

mvh JakobA
Avatar billede jakoba Nybegynder
04. juni 2002 - 11:55 #2
Ups. der skal så = og ikke et lille o i linien
    var dato = new Date( aar, maaned-1, dag );
Avatar billede Slettet bruger
04. juni 2002 - 16:05 #3
Avatar billede o-zone Nybegynder
04. juni 2002 - 16:19 #4
phew... det er godt nok nogle dunkle regler for skudår! :-)

Her er hvad jeg er nået frem til (det burde virke så vidt jeg kan se, og gør det, så vidt jeg har testet) :

---8<----------
function validerDato(d,m,y)
{
    if ((m=="01")||(m=="03")||(m=="05")||(m=="07")||(m=="08")||(m=="10")||(m=="12")) // lang måned
    { if ((d<1)||(d>31)) return false; }
    else if ((m=="04")||(m=="06")||(m=="09")||(m=="11")) // kort måned
    { if ((d<1)||(d>30)) return false; }
    else if (m=="02") // februar
    {
        aarSidenSkudår = y-1600;
        if ( (aarSidenSkudår%4) != 0) // alle ikke hvert 4. år er ikke skudår
        {
            if ((d<1)||(d>28)) return false;
        }
        else
        {
            if ( (aarSidenSkudår%100) != 0 ) // alle hver 4. år er ikke skudår alligevel, hvis de er hver 100. år
            {
                if ((d<1)||(d>29)) return false;
            }
            else
            {
                if ( (aarSidenSkudår%400) != 0 ) // med mindre de er hvert 400. år, hvor de er er skudår alligevel
                {
                    if ((d<1)||(d>28)) return false;
                }
                else
                {
                    if ((d<1)||(d>29)) return false;
                }
            }
        }
    }
    else { return false; }
    return true;
}
---8<----------
Avatar billede o-zone Nybegynder
04. juni 2002 - 16:32 #5
Det kan da godt være at scriptet phoenixv refererer til er pænere end mit (og at han svarede før mig), men så vidt jeg kan se er mit script altså mere korrekt (ikke at fejlen er noget der vil være et stort problem).

100-års reglen siger at det alligevel ikke er skudår hvert 100. år - dvs. at f.eks. 1900 ikke er et skudår på trods af at det passer med 4-års reglen (med mindre det falder for 400-års reglen).
Ergo findes f.eks. datoen 29-02-1900 ikke, men det fanger phoenixv's script ikke B-)

(kald mig bare kloge-åge) ;-)
Avatar billede jakoba Nybegynder
04. juni 2002 - 16:45 #6
tjae kloge-åge, jeg synes nu stadig det er nemmere at bruge det javascripts Date objekt. Det har alle reglerne indbygget :-))
Avatar billede o-zone Nybegynder
04. juni 2002 - 17:39 #7
jakoba>> ja, det kan du selvfølgelig have ret i, men det er vel en smagssag. Anyway så har jakemedes afvist dit svar, så det var åbenbart ikke det han var efter. :|
Avatar billede jakemedes Nybegynder
05. juni 2002 - 11:50 #8
det fungede.... danke
:o)
jakemedes
Avatar billede Slettet bruger
05. juni 2002 - 22:02 #9
At Jakemedes ikke accepterer Jakoba's svar er vel bare ignorance fra hans side. Selvfølgelig er Jakoba's nemmest (og dermed bedst). Det skulle måske bare udbygges, men så kan han jo bare sige det!
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