Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

VERIFICATION DE DATE JJ/MM/AAAA


Information sur la source

Description

Ce scripte prend en compte les années bissextiles et le nombre de jours, l'avantage c'est qu'il averti l'utilisateur de son erreur.
 

Source

  • mot=document.frmInscription.txtDateNaissance.value;
  • erreur=false;
  • if (mot.length!=10){alert("Veuillez introduire votre date de naissance au format JJ/MM/AAAA (exemple : 12/02/1981)");Erreur=true;return;}
  • else{
  • motjour=mot.substring(0,2);motmois=mot.substring(3,5);
  • motan=mot.substring(6,10);motsep=mot.charAt(2)+mot.charAt(5);}
  • if (isNaN(motjour+motmois+motan)|| motan>3000 ||motan<1900 || motsep!="//"){alert("Veuillez introduire votre date de naissance au format JJ/MM/AAAA (exemple : 12/02/1981)");Erreur=true;return;}
  • else {choix="";
  • if (motan-(parseInt(motan/4)*4)==0){choix="bi"};
  • if (motan-(parseInt(motan/4)*4)==0&&motan-(parseInt(motan/100)*100)==0)
  • {choix=""};
  • if (motan-(parseInt(motan/4)*4)==0&&motan-(parseInt(motan/400)*400)==0)
  • {choix="bi"}
  • switch (motmois){
  • case "01":if(motjour<1 || motjour>31){alert("Le mois de Janvier comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
  • break;
  • case"02":if(choix=="bi"){if(motjour<1 || motjour>29){alert("Le mois de Février comporte 29 jours car l'année choisie est bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 29.");Erreur=true;return;}}
  • else{if(motjour<1 || motjour>28){alert("Le mois de Février comporte 28 jours car l'année choisie n'est pas bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 28.");Erreur=true;return;}};
  • break;
  • case "03":if(motjour<1 || motjour>31){alert("Le mois de Mars comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
  • break;
  • case "04":if(motjour<1 || motjour>30){alert("Le mois de Avril comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");Erreur=true;return;};
  • break;
  • case "05":if(motjour<1 || motjour>31){alert("Le mois de Mai comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
  • break;
  • case "06":if(motjour<1 || motjour>30){alert("Le mois de Juin comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");Erreur=true;return;};
  • break;
  • case "07":if(motjour<1 || motjour>31){alert("Le mois de Juillet comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
  • break;
  • case "08":if(motjour<1 || motjour>31){alert("Le mois de Août comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
  • break;
  • case "09":if(motjour<1 || motjour>30){alert("Le mois de Septembre comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");Erreur=true;return;};
  • break;
  • case "10":if(motjour<1 || motjour>31){alert("Le mois de Octobre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
  • break;
  • case "11":if(motjour<1 || motjour>30){alert("Le mois de Novembre comporte 30 jours, veuillez choisirune date de naissance comprise en 1 et 30.");Erreur=true;return;};
  • break;
  • case "12":if(motjour<1 || motjour>31){alert("Le mois de Décembre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
  • break;
  • default:alert("Le mois que vous avez entré n'est pas valide. Choisissez un mois compris entre 1 et 12.");Erreur=true;return;
  • }
  • }
mot=document.frmInscription.txtDateNaissance.value;
erreur=false;
    if (mot.length!=10){alert("Veuillez introduire votre date de naissance au format JJ/MM/AAAA (exemple : 12/02/1981)");Erreur=true;return;}
    else{
    motjour=mot.substring(0,2);motmois=mot.substring(3,5);
    motan=mot.substring(6,10);motsep=mot.charAt(2)+mot.charAt(5);}
    if (isNaN(motjour+motmois+motan)|| motan>3000 ||motan<1900 || motsep!="//"){alert("Veuillez introduire votre date de naissance au format JJ/MM/AAAA (exemple : 12/02/1981)");Erreur=true;return;}
    else {choix="";    
    if (motan-(parseInt(motan/4)*4)==0){choix="bi"};
    if (motan-(parseInt(motan/4)*4)==0&&motan-(parseInt(motan/100)*100)==0)
    {choix=""};
    if (motan-(parseInt(motan/4)*4)==0&&motan-(parseInt(motan/400)*400)==0)
    {choix="bi"}
    switch (motmois){
    case "01":if(motjour<1 || motjour>31){alert("Le mois de Janvier comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
    break;
    case"02":if(choix=="bi"){if(motjour<1 || motjour>29){alert("Le mois de Février comporte 29 jours car l'année choisie est bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 29.");Erreur=true;return;}}
              else{if(motjour<1 || motjour>28){alert("Le mois de Février comporte 28 jours car l'année choisie n'est pas bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 28.");Erreur=true;return;}};
    break;
    case "03":if(motjour<1 || motjour>31){alert("Le mois de Mars comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
    break;
    case "04":if(motjour<1 || motjour>30){alert("Le mois de Avril comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");Erreur=true;return;};
    break;
    case "05":if(motjour<1 || motjour>31){alert("Le mois de Mai comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
    break;
    case "06":if(motjour<1 || motjour>30){alert("Le mois de Juin comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");Erreur=true;return;};
    break;
    case "07":if(motjour<1 || motjour>31){alert("Le mois de Juillet comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
    break;
    case "08":if(motjour<1 || motjour>31){alert("Le mois de Août comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
    break;
    case "09":if(motjour<1 || motjour>30){alert("Le mois de Septembre comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");Erreur=true;return;};
    break;
    case "10":if(motjour<1 || motjour>31){alert("Le mois de Octobre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
    break;
    case "11":if(motjour<1 || motjour>30){alert("Le mois de Novembre comporte 30 jours, veuillez choisirune date de naissance comprise en 1 et 30.");Erreur=true;return;};
    break;
    case "12":if(motjour<1 || motjour>31){alert("Le mois de Décembre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");Erreur=true;return;};
    break;
    default:alert("Le mois que vous avez entré n'est pas valide. Choisissez un mois compris entre 1 et 12.");Erreur=true;return;	
}
}

Conclusion

Il suffit de verifier si erreur est egal a true ou false
 

Commentaires et avis

signaler à un administrateur
Commentaire de traversbourquin le 29/10/2004 21:11:51

Beaucoup plus court et tout aussi performant :

<script>
function isDateValid(saisie) {
if (saisie == "") return false;
saisie = (saisie).split("/")
if ((saisie.length != 3) || isNaN(parseInt(saisie[0])) || isNaN(parseInt(saisie[1])) ||

isNaN(parseInt(saisie[2]))) return false
var laDate = new Date(eval(saisie[2]),eval(saisie[1])-1,eval(saisie[0]))
var annee = laDate.getYear()
if ((Math.abs(annee)+"").length < 4) annee = annee + 1900
return ((laDate.getDate() == eval(saisie[0])) && (laDate.getMonth() == eval(saisie[1])-1) && (annee

== eval(saisie[2])))
}
</script>

<form name="form1" onSubmit="isDateValid(form1.date.value)?alert('date correcte !'):alert('date

incorrecte !');";">
Date (au format jj/mm/aaaa)  : <INPUT type="text" name="date">
</form>

signaler à un administrateur
Commentaire de traversbourquin le 29/10/2004 21:23:32

Je suis désolé ! Le copier-coller m'a joué un mauvais tour !
Voici donc le code correct :

<script>
function testDateValide(saisie) {
if (saisie == "") return false;
saisie = (saisie).split("/");
if ((saisie.length != 3) || isNaN(parseInt(saisie[0])) || isNaN(parseInt(saisie[1])) || isNaN(parseInt(saisie[2]))) return false;
var laDate = new Date(eval(saisie[2]),eval(saisie[1])-1,eval(saisie[0]));
var annee = laDate.getYear();
if ((Math.abs(annee)+"").length < 4) annee = annee + 1900;
return ((laDate.getDate() == eval(saisie[0])) && (laDate.getMonth() == eval(saisie[1])-1) && (annee == eval(saisie[2])));
}
</script>

<form name="form1" onSubmit="testDateValide(form1.date.value)?alert('date correcte !'):alert('date incorrecte !');">
Date (au format jj/mm/aaaa)  : <INPUT type="text" name="date">
</form>

signaler à un administrateur
Commentaire de Magidev le 30/10/2004 16:12:39

LE BUT DE CE CODE :

Vérifier la date ET avertir l'utilisateur de son erreur, à savoir où il s'est trompé. Ton code je le connais et ca ne fait pas ca, ca dit seulement si c'est vrai ou non, mais le but du mien c'est de montrer ou l'utilisateur s'est trompé.

Donc avant de poster des Mieux Celui-ci ou Mieux celui-la se serait bien de lire les commentaires de codes, merci

signaler à un administrateur
Commentaire de traversbourquin le 30/10/2004 16:39:52

D'une part, je n'ai jamais écrit que ce code était mieux que le tien.
D'autre part, il est très facile à adapter pour situer l'erreur. Il suffit simple d'insérer alert('le_type_erreur') avant chacun des 'return false'

Très cordialement

signaler à un administrateur
Commentaire de traversbourquin le 30/10/2004 23:12:03

> Vérifier la date ET avertir l'utilisateur de son erreur
Très bien ! Voici donc le code ad hoc:


<script type="text/javascript">
var laDate,annee,Mois= new Array("de janvier","de février","de mars","d'avril","de mai","de juin","de juillet","d'août","de septembre","d'octobre","de novembre","de décembre"),msg="Veuillez introduire votre date au format JJ/MM/AAAA \n(par exemple : 12/02/1981)",msg1=".\nVeuillez indiquer un nombre compris entre 01 et ",msg2="Nouvelle saisie de la date";

function testDateValide(saisie) {
if (saisie == "") {alert(msg);return false;};
saisie = (saisie).split("/");
if ((saisie.length != 3) || isNaN(parseInt(saisie[0])) || isNaN(parseInt(saisie[1])) || isNaN(parseInt(saisie[2]))) {alert(msg);return false};
if ((saisie[0].length !=2) || (eval(saisie[0]) > 55) || (saisie[1].length !=2) || (saisie[2].length !=4)) {alert(msg);return false};
laDate = new Date(eval(saisie[2]),eval(saisie[1])-1,eval(saisie[0]));
annee = laDate.getYear();
if ((Math.abs(annee)+"").length < 4) annee = annee + 1900;
if ((laDate.getDate() != eval(saisie[0])) && (eval(saisie[1]<13))) {if (annee != eval(saisie[2])) {annee--};alert("Le mois "+ Mois[eval(saisie[1])-1] + " ne comporte que " + ((saisie[0]) - laDate.getDate()) + " jours en "+ annee + msg1 + (eval(saisie[0])-laDate.getDate()) + ".");return false};
if (laDate.getMonth() != eval(saisie[1]-1)) {alert("Il n'y a jamais eu " + eval(saisie[1]) + " mois dans cette année" + msg1 + "12.");return false};
return ((laDate.getDate() == eval(saisie[0])) && (laDate.getMonth() == eval(saisie[1])-1) && (annee == eval(saisie[2])));
}
</script>

<form name="form1" onSubmit="!testDateValide(form1.date.value)?alert(msg2):function(){}">
Date (au format jj/mm/aaaa) : <INPUT type="text" name="date">
</form>

signaler à un administrateur
Commentaire de ladry le 03/10/2005 21:28:18

Moi j'ai trouvé le code de Magidev niquel. Je l'ai posé dans une page, j'ai pas du tout galéré pour l'adapter.
Merci à toi.

signaler à un administrateur
Commentaire de luuuuudooooo le 12/10/2005 15:40:41

Moi j'ai trouvé aussi cette fonction supere simple et facile à adapter alors merci Magidev !!!

signaler à un administrateur
Commentaire de daymonns le 14/10/2006 13:50:43

Franchement très bien, c'est juste ce que je cherchais. Ni plus ni moins pas de fioritures :)

signaler à un administrateur
Commentaire de coej le 23/06/2007 14:54:03

Bonjour traversbourquin,

t'as juste oublié de verifier la date du jour. La personne qui n'est pas née est quant même validée.
Tres bien malgrés ça.

signaler à un administrateur
Commentaire de fenodmz le 01/08/2007 14:27:00

Salut !
Moi aussi j'ai une autre question : et si les dates étaient séparé en trois champ : comme ceci ?
je n'ai pas de script pour tester la validité de ce formulaire. et dans la fonction "validation" il n'y a pas de test de validité de la date.

<form action="fic.php" name="formulaire" onsubmit="return validation();" method="post">
<table>
<tr>
   <td width="200">Date de cr&eacute;ation entre le</td>
   <td><select name="jourcrea1" class="inputmenuderoul2"><?echo $szMenuJour?></select> / <select name="moiscrea1" class="inputmenuderoul2"><?echo $szMenuMois?></select> / <select name="anneecrea1" class="inputmenuderoul2"><?echo $szMenuAnnee?></select></td>
</tr>
<tr>
   <td width="300"><input type="reset" value="> Effacer <"> </td>
   <td colspan="2"><input type="submit" name="" value=">Rechercher<"></td>
</tr>
</table>
</form>

Besoin d'aide d'urgence !
Merci beaucoup !

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,530 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.