Avatar billede clausn Nybegynder
29. april 2002 - 11:34 Der er 14 kommentarer og
2 løsninger

Validering af datoer (fra dropdown bokse)

Hej,

Har et problem med følg:
Jeg har 3 dropdown bokse:
dato1 (dage) - står som 1, 2, 3, 4 ... 31
dato2 (mdr) - står som 01, 02, 03 ... 12
dato3 (år) - står som 2000, 2001, 2002, 2003 osv...

Jeg mangler et javascript hvor der kommer en alert boks frem hvis man fx har valgt 31-04-2002 - altså en ikke gyldig dato (som en kombination af de 3 bokse)

Hilsen
Claus




Avatar billede =maddog= Nybegynder
29. april 2002 - 11:50 #1
if ((formnavn.dato1.value=="2"&&formnavn.dato2.value=="30")||(formnavn.dato1.value=="2"&&formnavn.dato2.value=="31")|| o.s.v
Avatar billede jakoba Nybegynder
29. april 2002 - 12:00 #2
function chackGyldigDato( aar, maaned, dag ) {
    dag = parseInt( dag, 10 );
    maaned = parseInt( maaned, 10 );
    aar = parseInt( aar, 10 );
    var valgtDato = new Date( aar, maaned-1, dag );
    if ( valgtDato.getMonth() == maaned-1 ) {
        // gyldig dato
        return true
    } else {
        // ugyldig dato
        return false
    }
}; //end chackGyldigDato( value, value, value ) -> boolean

kaldes med fx
    if ( ! checkGyldigDato( '2001', '09', '35' ) ) {
        // Ups, der er ikke 35 dage i den måned
        alert( "vælge end anden dato" );
        return false;
    } // fortsæt med at checke andre felter.

mvh JakobA
Avatar billede =maddog= Nybegynder
29. april 2002 - 12:03 #3
smartest!!
Avatar billede clausn Nybegynder
29. april 2002 - 12:04 #4
Hvordan sætter jeg det ind i en form?
Avatar billede =maddog= Nybegynder
29. april 2002 - 12:07 #5
onsubmit= "if (! checkGyldigDato( formnavn.dato3.value, formnavn.dato2.value, formnavn.dato1.value ) {alert('ups'); return false;} else return true;"
Avatar billede =maddog= Nybegynder
29. april 2002 - 12:08 #6
onsubmit= "if (! checkGyldigDato( formnavn.dato3.value, formnavn.dato2.value, formnavn.dato1.value )) {alert('ups'); return false;} else return true;"
ok en smutter
Avatar billede clausn Nybegynder
29. april 2002 - 12:14 #7
okey... det fatter jeg ikke en meter af... hvorfor står der
if ( ! checkGyldigDato( '2001', '09', '35' ) ) {

Man kan vel godt vælge en anden dato?

Gider i ikke lave et helt eksempel?
Avatar billede =maddog= Nybegynder
29. april 2002 - 12:19 #8
det er jo netop et ekspempel. min kommentar kan du praktisk talt plastre direkte ind i din <input submit> tag.
Avatar billede clausn Nybegynder
29. april 2002 - 12:28 #9
Hejsa,

Fatter stadig minus.... Har desuden dette som bliver kaldt i:
<form action='projekt.asp' method='post' onSubmit="return Checkform(this);">

<script language="JavaScript">
<!--
function Checkform(thisform) {

    // Startværdier
    strError = 'Der opstod følgende fejl:\n\n';
    intError = 0;
   
    if (thisform.tid1.value == "")
    {
    strError = strError + '- Antal timer mangler\n'
    intError = 1;
    thisform.tid1.focus();
    }

    if (thisform.tid2.value == "")
    {
    strError = strError + '- Antal minutter mangler\n'
    intError = 1;
    thisform.tid2.focus();
    }   

    if (thisform.Kommentar.value == "")
    {
    strError = strError + '- Din kommentar mangler\n'
    intError = 1;
    thisform.Kommentar.focus();
    }   

    if (intError == 1) {
    alert(strError)
    return false;
    }
}
-->
</script>

Har prøvet at lave nedenstående som test, men det virker ikke:
<script language="JavaScript">
<!--
function chackGyldigDato( aar, maaned, dag ) {
    dag = parseInt( dag, 10 );
    maaned = parseInt( maaned, 10 );
    aar = parseInt( aar, 10 );
    var valgtDato = new Date( aar, maaned-1, dag );
    if ( valgtDato.getMonth() == maaned-1 ) {
        // gyldig dato
        return true
    } else {
        // ugyldig dato
        return false
    }
}; //end chackGyldigDato( value, value, value ) -> boolean


    if ( ! checkGyldigDato( '2001', '09', '35' ) ) {
        // Ups, der er ikke 35 dage i den måned
        alert( "vælge end anden dato" );
        return false;
    } // fortsæt med at checke andre felter.
-->
</script>
<form action="/projekt/datotest.asp" method="post">
<select name='dato1'>
<option  value='24'>24.</option>
<option  value='25'>25.</option>
<option  value='26'>26.</option>
<option  value='27'>27.</option>
<option  value='28'>28.</option>
<option  selected  value='29'>29.</option>
<option  value='30'>30.</option>
<option  value='31'>31.</option>
</select>

<select name='dato2'>
<option  value='01'>januar</option>
<option  value='02'>februar</option>
<option  value='03'>marts</option>
<option selected value='04'>april</option>
</select>

<select name='dato3'>
<option selected value='2002'>2002</option>
<option  value='2003'>2003</option>
<option  value='2004'>2004</option>
</select>

<input type="submit" value="Gem" onsubmit= "if (! checkGyldigDato( formnavn.dato3.value, formnavn.dato2.value, formnavn.dato1.value )) {alert('ups'); return false;} else return true;">
</form>
Avatar billede =maddog= Nybegynder
29. april 2002 - 12:37 #10
ok. så glem det jeg skrev. slet det hele igen med undtagelse af jakoba's funktion og sæt
    if (! checkGyldigDato( thisform.dato3.value, thisform.dato2.value, thisform.dato1.value ))
    {
    strError = strError + '- Årstal og dato er ugyldig\n'
    intError = 1;
    thisform.Kommentar.focus();
    }
   
ind i Checkform
Avatar billede =maddog= Nybegynder
29. april 2002 - 12:40 #11
følgende virker. jeg har remarket den del af Checkform der ikke bruges. Du skal bare fjerne /* og */ når du har lavet hele din form
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html><head><script>
function checkGyldigDato( aar, maaned, dag ) {
    dag = parseInt( dag, 10 );
    maaned = parseInt( maaned, 10 );
    aar = parseInt( aar, 10 );
    var valgtDato = new Date( aar, maaned-1, dag );
    if ( valgtDato.getMonth() == maaned-1 ) {
        // gyldig dato
        return true
    } else {
        // ugyldig dato
        return false
    }
}; //end chackGyldigDato( value, value, value ) -> boolean
function Checkform(thisform) {

    // Startværdier
    strError = 'Der opstod følgende fejl:\n\n';
    intError = 0;
  /*
    if (thisform.tid1.value == "")
    {
    strError = strError + '- Antal timer mangler\n'
    intError = 1;
    thisform.tid1.focus();
    }

    if (thisform.tid2.value == "")
    {
    strError = strError + '- Antal minutter mangler\n'
    intError = 1;
    thisform.tid2.focus();
    }   

    if (thisform.Kommentar.value == "")
    {
    strError = strError + '- Din kommentar mangler\n'
    intError = 1;
    thisform.Kommentar.focus();
    }
    */
    if (! checkGyldigDato( thisform.dato3.value, thisform.dato2.value, thisform.dato1.value ))
    {
    strError = strError + '- Årstal og dato er ugyldig\n'
    intError = 1;
    thisform.Kommentar.focus();
    }
   
    if (intError == 1) {
    alert(strError)
    return false;
    }
}
</script></head><body>
<form method='post' onSubmit="return Checkform(this);">

<select name='dato1'>
<option  value='24'>24.</option>
<option  value='25'>25.</option>
<option  value='26'>26.</option>
<option  value='27'>27.</option>
<option  value='28'>28.</option>
<option  selected  value='29'>29.</option>
<option  value='30'>30.</option>
<option  value='31'>31.</option>
</select>

<select name='dato2'>
<option  value='01'>januar</option>
<option  value='02'>februar</option>
<option  value='03'>marts</option>
<option selected value='04'>april</option>
</select>

<select name='dato3'>
<option selected value='2002'>2002</option>
<option  value='2003'>2003</option>
<option  value='2004'>2004</option>
</select>

<input type="submit" value="Gem">
</form>
</body></html>
Avatar billede clausn Nybegynder
29. april 2002 - 13:02 #12
Den kommer med en fejl - kan ikke se hvad den er. Siden skifter hurtigt, så jeg kan ikke nå at se hvad der står.
Avatar billede =maddog= Nybegynder
29. april 2002 - 13:07 #13
nææeh, men det skulle jo være klart nok. har du prøvet i det mindste at lave en ugyldig dato. for den del virker nemlig. fejlen kommer fordi der ikke er noget kommentarfelt i din <form>
sæt evt. <textarea name="Kommentar">Skriv en kommentar</textarea> ind i din form.
Avatar billede clausn Nybegynder
29. april 2002 - 13:09 #14
Kanon!! Takker...! Skal du have nogle point eller?
Avatar billede =maddog= Nybegynder
29. april 2002 - 13:10 #15
stik mig 10.
Avatar billede clausn Nybegynder
29. april 2002 - 13:11 #16
Du får 10...
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