begin process at 2008 05 16 05:42:44
1 173 216 membres
58 nouveaux aujourd'hui
13 970 membres club

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

Catégorie :Date & Heure Niveau : Initié Date de création : 28/10/2004 Vu : 9 988

Note :
3,5 / 10 - par 4 personnes
3,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

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
  • 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

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Boutique

Boutique de goodies CodeS-SourceS