Avatar billede dondres Nybegynder
05. juni 2005 - 16:00 Der er 2 kommentarer

Dato validering

Hej eksperter.
Jeg sidder og roder med en formular med felterne "fradato" og "tildato", hvor jeg skal lave validere tre ting:

1) Chekke om der er skrevet noget i begge felter - (Det har jeg styr på!)

Og så kommer promblemerne!

2) Chekke at datoerne er skrevet i korrekt format (dd/mm/åååå)
3) Chekke at "Fradato" falder før "Tildato"

Jeg har kigge lidt på de øvrige spørgsmål der har været herinde vedr. lignende spørgsmål og fundet en hel del validerings-script på nettet, som kan validere de tre kriterier individuelt.

Mit store problem ligger i at lave en validering som sammenfatter alle de tre valideringsønsker i en fuktion.



Koden jeg har indtil nu ser sådan ud:

<html>
<head>
<script type="text/javascript">
function validering()
  {
  error = 0;
  if((document.forms[0].startDate.value=='') && (error==0)) 
  {       
    alert('Skriv venligt en startdato!');
    document.forms[0].startDate.focus();
    error = 1;       
  }   
  if((document.forms[0].endDate.value=='') && (error==0)) 
  {       
    alert('Skriv venligst en slutdato!');
    document.forms[0].endDate.focus();
    error = 1;               
  }
  if(error == 0)
  document.forms[0].submit();   
  }
</script>
</head>
<body>
<form name="formPicker" method="post" onsubmit="validering();return false;">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td > Fra (dato-m&aring;ned-&aring;r):<br> <input name="startDate" type="text" class="input" value="" size=12 maxlength=12>
        f.eks.: 31-12-2005</td>
    </tr>
    <tr>
      <td> Til (dato-m&aring;ned-&aring;r):<br> <input name="endDate" type="text" class="input" size=12 maxlength=12>
        f.eks.: 31-12-2005</td>
    </tr>
    <tr>
      <td><input name="Submit" type="submit" class="submit" value="Opdater"></td>
    </tr>
  </table>
</form>
</body>
</html>

Kan nogen hjælpe mig?
Avatar billede roenving Novice
06. juni 2005 - 17:42 #1
Skal det være dd-mm-åååå (altså f.eks. 01-02-2005 ?-)
Avatar billede roenving Novice
07. juni 2005 - 03:07 #2
Så f.eks. sådan:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function valider(f){

  if(!f.startDate.value.match(/^\d\d-\d\d-\d{4}$/)){
    alert('Angiv venligst en startdato i formatet dd-mm-åååå!');
    f.startDate.focus();
    return false;
  }

  if(!f.endDate.value.match(/^\d\d-\d\d-\d{4}$/)){
    alert('Angiv venligst en slutdato i formatet dd-mm-åååå!');
    f.endDate.focus();
    return false;
  }
 
  var st = f.startDate.value.split("-");
  stDato = new Date(st[2],+st[1]-1,st[0]);
  if(stDato.getFullYear() != st[2] || stDato.getMonth()+1 != st[1] || stDato.getDate() != st[0]){
    alert('Angiv venligst en gyldig startdato!');
    f.startDate.focus();
    return false;
  }
 
  var sl = f.endDate.value.split("-");
  slDato = new Date(sl[2],+sl[1]-1,sl[0]);
  if(slDato.getFullYear() != sl[2] || slDato.getMonth()+1 != sl[1] || slDato.getDate() != sl[0]){
    alert('Angiv venligst en gyldig slutdato!');
    f.endDate.focus();
    return false;
  }
 
  if(stDato.getTime() >= slDato.getTime()){
    alert('Angiv venligst en startdato, som er før slutdato!');
    f.startDate.focus();
    return false;
  }
 
  return true;
}
</script>
</head>
<body>
<form name="formPicker" method="post" onsubmit="return valider(this);">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td > Fra (dato-m&aring;ned-&aring;r):<br> <input name="startDate" type="text" class="input" value="" size=12 maxlength=12>
        f.eks.: 31-12-2005</td>
    </tr>
    <tr>
      <td> Til (dato-m&aring;ned-&aring;r):<br> <input name="endDate" type="text" class="input" size=12 maxlength=12>
        f.eks.: 31-12-2005</td>
    </tr>
    <tr>
      <td><input name="Submit" type="submit" class="submit" value="Opdater"></td>
    </tr>
  </table>
</form>
</body>
</html>
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