03. juli 2002 - 20:30
Der er
18 kommentarer og 1 løsning
Check dato indtastet i form
Jeg har en form hvor man skal indtaste en dato, hvordan sikker jeg mig at man kun kan taste følgene datoformat ind => dd-mm-aaaa eksempel vis 26-05-2002
Annonceindlæg fra Computerworld
Lav 3 felter et for dag et for måned og et for år...
Er det på client-side du vil have checket? Så er det jo javascript :) <html> <head> <script language=javascript1.2> function validateForm( myForm ){ if( !/^(\d{2}-){2}\d{4}$/.test( myForm.dato.value ) ){ alert('ugyldigt datoformat'); return false; } return true; } </script> </head> <body> <form name=myForm onsubmit='return validateForm( this );'> <input type=text name=dato> <input type=submit> </form> </body> </html> Denne checker jo selvfølgelig kun på formatet og ikke på max dage, skudår etc. men det kan også laves hvis det er nødvendigt.
dato feltet er inde i en form der også poster andre felter => <form action="udgivelse_gem.php" method="POST"> Hvordan får jeg lagt <form name=myForm onsubmit='return validateForm( this );'> sammen med den?
<form action="udgivelse_gem.php" method="POST" onsubmit='return validateForm( this );'>
checket virker, ville det være muligt at lave et form felt der er fortrykt => [ - - ]
Hmmm, ja...men så bliver den lidt komplex... Jeg kan da give det et forsøg ( yeah, i'm bored :p )..men det tager nok lige lidt tid.
Jaeeeee, hvis jeg skal sige det selv kan jeg ikke lide den funktionalitet med fortrykt [ - - ]. Jeg har givet det et forsøg, men man kan ikke slette/delete i feltet ( det kunne jeg ikke helt styre ). Til gængæld bliver feltet "resettet" ved focus. Jeg fandt min gamle datovalidator, så nu har den skudår og det hele med - ikke kun formatet. Man kan nøjes med at skrive YY i år-feltet, så sætter den 20YY ind... <html> <head> <script language=javascript1.2> function controlInput( e,myElement ){ var key; var keychar; if(window.event){ key = window.event.keyCode; } else if(e){ key = e.which; } else{ return true; } if( key == 13 ){ return true; } keychar = String.fromCharCode(key); if( !/\d/.test( keychar ) ){ return false; } myElement.value = myElement.value.replace(/\s/,keychar); return false; } function validateDate( date ){ var regExp = /^ *(\d{1,2})-(\d{1,2})-(\d{2}|\d{4}) *$/ var dateList = regExp.exec( date ) if( dateList != null && dateList.length == 4 ){ regExp = /^(\d{2})$/; dateList[3] = dateList[3].replace( regExp,"20$1" ); var yearBug = 0; if( dateList[3] >= 1900 && dateList[3] <= 1999 ){ yearBug = 1900; } dateList[2] = dateList[2]-1; var tempDate = new Date(dateList[3],dateList[2],dateList[1]); if((dateList[1]==tempDate.getDate())&&(dateList[2]==tempDate.getMonth())&&(dateList[3]==(tempDate.getYear()+yearBug))){ var dateStr = (tempDate.getDate() < 10 ? "0":"") + tempDate.getDate() + "-"; dateStr += (tempDate.getMonth()+1 < 10 ? "0":"") + eval(tempDate.getMonth()+1) + "-"; dateStr += eval(tempDate.getYear() + yearBug); return dateStr; } } return false; } function validateForm( myForm ){ myDate = validateDate( myForm.dato.value ); if( myDate == false ){ alert('ugyldig dato'); return false; } myForm.dato.value = myDate; return true; } </script> </head> <body> <form name=formName onsubmit='return validateForm( this );'> <input type=text name=dato value=" - - " onkeydown='return controlInput( event,this );' onfocus='this.value=" - - ";'> <input type=submit> </form> </body> </html>
03. juli 2002 - 22:16
#11
du kan logge på med password:gæst username:gæst
03. juli 2002 - 22:36
#12
Doh! der var kun kommet 1 blankt felt over med copy / paste sorry! Det virker takker :) Yellow> kommer du også med et svar?
03. juli 2002 - 22:41
#13
HMRF! Virker fint her, jeg hader browsere :p Hvilken browserversion kører du med? prøv eventuelt at udskifte: myElement.value = myElement.value.replace(/\s/,keychar); med myElement.value = myElement.value.replace(//,keychar); eller myElement.value = myElement.value.replace(/\s{1}/,keychar);
03. juli 2002 - 22:46
#14
Faktisk tror jeg bedre jeg kan lide den her: <html> <head> <script language=javascript1.2> function validateDate( date ){ var regExp = /^ *(\d{1,2})-(\d{1,2})-(\d{2}|\d{4}) *$/ var dateList = regExp.exec( date ) if( dateList != null && dateList.length == 4 ){ regExp = /^(\d{2})$/; dateList[3] = dateList[3].replace( regExp,"20$1" ); var yearBug = 0; if( dateList[3] >= 1900 && dateList[3] <= 1999 ){ yearBug = 1900; } dateList[2] = dateList[2]-1; var tempDate = new Date(dateList[3],dateList[2],dateList[1]); if((dateList[1]==tempDate.getDate())&&(dateList[2]==tempDate.getMonth())&&(dateList[3]==(tempDate.getYear()+yearBug))){ var dateStr = (tempDate.getDate() < 10 ? "0":"") + tempDate.getDate() + "-"; dateStr += (tempDate.getMonth()+1 < 10 ? "0":"") + eval(tempDate.getMonth()+1) + "-"; dateStr += eval(tempDate.getYear() + yearBug); return dateStr; } } return false; } function validateForm( myForm ){ myDate = validateDate( myForm.dd.value + '-' + myForm.mm.value + '-' + myForm.yy.value ); if( myDate == false ){ alert('ugyldig dato'); return false; } myForm.dato.value = myDate; return true; } </script> </head> <body> <form name=formName onsubmit='return validateForm( this );'> <input type=text name="dd" size=2 maxlength=2> - <input type=text name="mm" size=2 maxlength=2> - <input type=text name="yy" size=4 maxlength=4> <input type=submit> </form> </body> </html>
03. juli 2002 - 22:52
#15
Den er god men, jeg gemmer jo dato som name="dato" i MySql nu står der name="dd" name="mm" name="yy"
03. juli 2002 - 22:53
#16
Men mon ikke $dato = $dd-$mm-$yy giver det samme resultat
03. juli 2002 - 23:03
#17
Der var den $dato = $dd . $mm . $yy; :)
03. juli 2002 - 23:12
#18
Det blev den sidste løsning! yellow> kommer du med et svar så du kan få de velfortjente points!
04. juli 2002 - 00:32
#19
Takker :)
Vi tilbyder markedets bedste kurser inden for webudvikling