Avatar billede danic Nybegynder
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
Avatar billede mjl Nybegynder
03. juli 2002 - 20:36 #1
Lav 3 felter et for dag et for måned og et for år...
Avatar billede mjl Nybegynder
03. juli 2002 - 20:36 #2
...evt. dropdown.
Avatar billede yellow Nybegynder
03. juli 2002 - 20:39 #3
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.
Avatar billede danic Nybegynder
03. juli 2002 - 20:45 #4
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?
Avatar billede yellow Nybegynder
03. juli 2002 - 20:46 #5
<form action="udgivelse_gem.php" method="POST" onsubmit='return validateForm( this );'>
Avatar billede danic Nybegynder
03. juli 2002 - 20:52 #6
checket virker, ville det være muligt at lave et form felt der er fortrykt

=> [  -  -    ]
Avatar billede yellow Nybegynder
03. juli 2002 - 20:55 #7
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.
Avatar billede danic Nybegynder
03. juli 2002 - 21:01 #8
cool! :)
Avatar billede yellow Nybegynder
03. juli 2002 - 21:53 #9
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>
Avatar billede danic Nybegynder
03. juli 2002 - 22:16 #10
yellow> den lader mig kun skrive et tegn i hver felt => 1-2-4

Check: http://www.dvdbasen.dk/html/udgivelser/ny_udgivelse.php
Avatar billede danic Nybegynder
03. juli 2002 - 22:16 #11
du kan logge på med
password:gæst
username:gæst
Avatar billede danic Nybegynder
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?
Avatar billede yellow Nybegynder
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);
Avatar billede yellow Nybegynder
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>
Avatar billede danic Nybegynder
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"
Avatar billede danic Nybegynder
03. juli 2002 - 22:53 #16
Men mon ikke $dato = $dd-$mm-$yy giver det samme resultat
Avatar billede danic Nybegynder
03. juli 2002 - 23:03 #17
Der var den $dato = $dd . $mm . $yy; :)
Avatar billede danic Nybegynder
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!
Avatar billede yellow Nybegynder
04. juli 2002 - 00:32 #19
Takker :)
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