besoin d'aide formulaire js switch

besoin d'aide formulaire js switch - HTML/CSS - Programmation

Marsh Posté le 27-05-2005 à 14:35:33    

voilà jai créée un formulaire où je voudrai vérifier la validité de la date, afin quell soit sous la forma jj/mm/aaaa.
j'ai le code suivant:
function Verifdate(jour)
 {
var trouve = false;
 
// je vérifie que le premier element de mon input est bien soit 0, soit 1, soit 2, soit3
switch(document.forms[1].elements[jour].value.substring(0,1)) {
 case 0:
trouve = true;
 break;
case 1:
trouve = true;
 break;
 case 2:
trouve = true;
 break;
 case 3:
trouve = true;
 break;
 default:
alert("Rentrez la date sous la forme: jj/mm/aaaa" );  
trouve = false;
 break;
}
 
// je vérifie que le 2eme element de mon input est bien soit 0, soit 1, soit 2, soit3...  
switch(document.forms[1].elements[jour].value.substring(1,2)) {
 case 0:
trouve = true;
 break;
case 1:
trouve = true;
 break;
 case 2:
trouve = true;
 break;
 case 3:
trouve = true;
 break;
 case 4:
trouve = true;
 break;
 case 5:
trouve = true;
 break;
 case 6:
trouve = true;
 break;
 case 7:
trouve = true;
 break;
 case 8:
trouve = true;
 break;
 case 9:
trouve = true;
 break;
 default:
alert("Rentrez la date sous la forme: jj/mm/aaaa" );  
trouve = false;
 break;
}
 
 
switch(document.forms[1].elements[jour].value.substring(3,4)) {
 case 0:
trouve = true;
 break;
case 1:
trouve = true;
 break;
 default:
alert("Rentrez la date sous la forme: jj/mm/aaaa" );  
trouve = false;
 break;
}
 
switch(document.forms[1].elements[jour].value.substring(4,5)) {
 case 0:
trouve = true;
 break;
case 1:
trouve = true;
 break;
 case 2:
trouve = true;
 break;
 default:
alert("Rentrez la date sous la forme: jj/mm/aaaa" );  
trouve = false;
 break;
}
 
 
switch(document.forms[1].elements[jour].value.substring(6,7)) {
 case 0:
trouve = true;
 break;
case 1:
trouve = true;
 break;
 case 2:
trouve = true;
 break;
 case 3:
trouve = true;
 break;
 default:
alert("Rentrez la date sous la forme: jj/mm/aaaa" );  
trouve = false;
 break;
}
 
switch(document.forms[1].elements[jour].value.substring(7,8)) {
 case 0:
trouve = true;
 break;
case 1:
trouve = true;
 break;
 case 2:
trouve = true;
 break;
 case 3:
trouve = true;
 break;
 default:
alert("Rentrez la date sous la forme: jj/mm/aaaa" );  
trouve = false;
 break;
}
 
switch(document.forms[1].elements[jour].value.substring(8,9)) {
 case 0:
trouve = true;
 break;
case 1:
trouve = true;
 break;
 case 2:
trouve = true;
 break;
 case 3:
trouve = true;
 break;
 case 4:
trouve = true;
 break;
 case 5:
trouve = true;
 break;
 case 6:
trouve = true;
 break;
 case 7:
trouve = true;
 break;
 case 8:
trouve = true;
 break;
 case 9:
trouve = true;
 break;
 default:
alert("Rentrez la date sous la forme: jj/mm/aaaa" );  
trouve = false;
 break;
}
 
switch(document.forms[1].elements[jour].value.substring(9,10)) {
 case 0:
trouve = true;
 break;
case 1:
trouve = true;
 break;
 case 2:
trouve = true;
 break;
 case 3:
trouve = true;
 break;
 case 4:
trouve = true;
 break;
 case 5:
trouve = true;
 break;
 case 6:
trouve = true;
 break;
 case 7:
trouve = true;
 break;
 case 8:
trouve = true;
 break;
 case 9:
trouve = true;
 break;
 default:
alert("Rentrez la date sous la forme: jj/mm/aaaa" );  
trouve = false;
 break;
}  }
 
mon input est présenté de la maniere suivante :
<input type="text" name="jour" onChange="Verifdate('jour');">
 
mais qd jexecute le code dans la navigateur, jobtiens 8 alertes, c'est-a-dire que les cas ne sont mm pas pris en compte et il va directement au default.
est-ce que qqun y voit plus clair que moi :cry:  
 
merci  :jap:

Reply

Marsh Posté le 27-05-2005 à 14:35:33   

Reply

Marsh Posté le 27-05-2005 à 14:37:31    

Oh maman [:johneh]

Reply

Marsh Posté le 27-05-2005 à 14:38:56    

Reply

Marsh Posté le 27-05-2005 à 14:44:28    

Code :
  1. <form action="pouet.php" onsubmit="verif()">
  2.   <div>
  3.     <label for="date">Date</label><input type="text" name="date" id="date" />
  4.     <input type="submit" value="Ok" />
  5.   </div>
  6. </form>
  7. <script type="text/javascript">
  8.   function verif() {
  9.      if(!document.getElementById('date').value.match(new RegExp(/^(((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))$/))) {
  10.        alert('La date doit être au format jj/mm/aaaa');
  11.        return false;
  12.      } else {
  13.         return true;
  14.      }
  15.   }
  16. </script>


Message édité par FlorentG le 27-05-2005 à 14:45:50
Reply

Marsh Posté le 27-05-2005 à 14:45:12    


Un peut trop lourdingue, rien ne vaut une RegExp ;)

Reply

Marsh Posté le 27-05-2005 à 15:13:33    

merci bcq FlorentG, ca marche :)
mais je ne comprends rien :p

Reply

Marsh Posté le 27-05-2005 à 15:23:03    

FlorentG a écrit :

Un peut trop lourdingue, rien ne vaut une RegExp ;)


Ok, faut que je réécrive avec des regexp, mais avec ma fonction, la saisie de 1 1 1 donne 01/01/2001 au lieu de râler  :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-05-2005 à 15:23:26    

Mara's dad a écrit :

Ok, faut que je réécrive avec des regexp, mais avec ma fonction, la saisie de 1 1 1 donne 01/01/2001 au lieu de râler  :D


Ah ouais effectivement :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed