29. april 2002 - 11:34Der 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)
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.
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>
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(); }
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(); }
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.
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.