IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

fonction verifier une date


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 8
    Points
    8
    Par défaut fonction verifier une date
    Bonjour a tous,

    J'ai un petit probleme et je voudrais savoir si c'etait possible que l'un de vous teste cette fonction chez lui voir si elle marche.

    Elle verifie un input ou il y a une date et si elle est bonne elle fait une soustraction et met le resultat dans un input(en gros pour deduire un age)
    et j'ai mit cette fonction sur un onblur

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    function verifDate(element,id1)
    {
    var tmp = document.forms["result_rpfa"].elements[element].value;
    var regsymbol = new RegExp("[ /-]","g");    //verif de la pr�sence d'espace (01 12 2004), de / (01/12/2004) ou de - (01-12-2004)
    var regnum = new RegExp("[0-9]{6,8}","g"); //type 011204 ou 01122004
    var jour = 0;
    var mois = 0;
    var annee = 0;
    var res = false;
    var ladate = new Date();
    var annee_courante = ladate.getFullYear().toString();
     
    document.forms["result_rpfa"].elemnts[id1].value = 20;
    if (tmp == " ")
      {
      var taille = tmp.length;
      var bool_num = regnum.test(tmp);
      var bool_symbol = regsymbol.test(tmp);
     
      if (bool_num)
        {
        	switch(taille)
              {
              case 6:	// cas 011204
                jour = tmp.substr(0,2);
                mois = tmp.substr(2,2);
    	    annee = annee_courante.substr(0,2) + tmp.substr(4,2);
                break;
              case 8:	// cas 01122004
                jour = tmp.substr(0,2);
                mois = tmp.substr(2,2);
    	    annee = tmp.substr(4,4);
              }
        }
      else
        {
        if (bool_symbol)
          {
        	switch(taille)
              {
              case 8:	// cas 01/12/04
                jour = tmp.substr(0,2);
                mois = tmp.substr(3,2);
    	    annee = annee_courante.substr(0,2) + tmp.substr(6,2);
                break;
              case 10:	// cas 01/12/2004
                jour = tmp.substr(0,2);
                mois = tmp.substr(3,2);
    	    annee = tmp.substr(6,4);
              }
          }
        }
     
        if ((jour != 0) && (mois != 0) && (annee != 0))
          {
          if ((mois == 1) || (mois == 3) || (mois == 5) || (mois == 7) || (mois == 8) || (mois == 10) || (mois == 12)) // mois � 31 jours
            {
            if (jour < 32)
              {
              res = true;
              }
            }
          if ((mois == 4) || (mois == 6) || (mois == 9) || (mois == 11)) // mois � 30 jours
            {
            if (jour < 31)
              {
              res = true;
              }
            }
          if (mois == 2) // 28 ou 29 jours selon ann�e bisextille
            {
            if ((annee % 4) == 0)
              {
                if (jour < 30)
                  {
                  res = true;
                  }
              }
            else
              {
                if (jour < 29)
                  {
                  res = true;
                  }
              }
            }
          }
    document.forms["result_rpfa"].elements[element].value = jour + "/" + mois + "/" + annee;
      if (res)
        {
     
     
        if (mois <= 6) 	// date de naissance au 31/12 le plus proche est le 31/12 de l'année précédente.
        	{
        	document.forms["result_rpfa"].elements[element].value = jour + "/" + mois + "/" + annee;
            document.forms["result_rpfa"].elements[id1].value = 2010 - annee + 1 ;
        	}
        else		// date de naissance au 31/12 le plus proche est le 31/12 de l'année en cours.
        	{
                document.forms["result_rpfa"].elements[element].value = jour + "/" + mois + "/" + annee;
                document.forms["result_rpfa"].elements[id1].value = 2010 - annee;
        	}
        			//prendre indice ("date" + i) afin de remplir la case age correspondante ("age" + i)
        if (document.forms["result_rpfa"].elements[id1].value < 0)
        	{
        	document.forms["result_rpfa"].elements[id1].value = 0;
        	}
     
        }
      else
        {
        alert("La date de naissance entrée n'est pas valide(elle doit etre de la forme jj/mm/aaaa ou un jour/mois n'est peut-être pas correct)");
        document.forms["result_rpfa"].elements[element].focus();
        }
      }
    //return res;
    }

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Points : 496
    Points
    496
    Par défaut
    Citation Envoyé par kratos60 Voir le message
    Bonjour a tous,

    J'ai un petit probleme et je voudrais savoir si c'etait possible que l'un de vous teste cette fonction chez lui voir si elle marche.

    Elle verifie un input ou il y a une date et si elle est bonne elle fait une soustraction et met le resultat dans un input(en gros pour deduire un age)
    et j'ai mit cette fonction sur un onblur

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    function verifDate(element,id1)
    {
    var tmp = document.forms["result_rpfa"].elements[element].value;
    var regsymbol = new RegExp("[ /-]","g");    //verif de la pr�sence d'espace (01 12 2004), de / (01/12/2004) ou de - (01-12-2004)
    var regnum = new RegExp("[0-9]{6,8}","g"); //type 011204 ou 01122004
    var jour = 0;
    var mois = 0;
    var annee = 0;
    var res = false;
    var ladate = new Date();
    var annee_courante = ladate.getFullYear().toString();
     
    document.forms["result_rpfa"].elemnts[id1].value = 20;
    if (tmp == " ")
      {
      var taille = tmp.length;
      var bool_num = regnum.test(tmp);
      var bool_symbol = regsymbol.test(tmp);
     
      if (bool_num)
        {
        	switch(taille)
              {
              case 6:	// cas 011204
                jour = tmp.substr(0,2);
                mois = tmp.substr(2,2);
    	    annee = annee_courante.substr(0,2) + tmp.substr(4,2);
                break;
              case 8:	// cas 01122004
                jour = tmp.substr(0,2);
                mois = tmp.substr(2,2);
    	    annee = tmp.substr(4,4);
              }
        }
      else
        {
        if (bool_symbol)
          {
        	switch(taille)
              {
              case 8:	// cas 01/12/04
                jour = tmp.substr(0,2);
                mois = tmp.substr(3,2);
    	    annee = annee_courante.substr(0,2) + tmp.substr(6,2);
                break;
              case 10:	// cas 01/12/2004
                jour = tmp.substr(0,2);
                mois = tmp.substr(3,2);
    	    annee = tmp.substr(6,4);
              }
          }
        }
     
        if ((jour != 0) && (mois != 0) && (annee != 0))
          {
          if ((mois == 1) || (mois == 3) || (mois == 5) || (mois == 7) || (mois == 8) || (mois == 10) || (mois == 12)) // mois � 31 jours
            {
            if (jour < 32)
              {
              res = true;
              }
            }
          if ((mois == 4) || (mois == 6) || (mois == 9) || (mois == 11)) // mois � 30 jours
            {
            if (jour < 31)
              {
              res = true;
              }
            }
          if (mois == 2) // 28 ou 29 jours selon ann�e bisextille
            {
            if ((annee % 4) == 0)
              {
                if (jour < 30)
                  {
                  res = true;
                  }
              }
            else
              {
                if (jour < 29)
                  {
                  res = true;
                  }
              }
            }
          }
    document.forms["result_rpfa"].elements[element].value = jour + "/" + mois + "/" + annee;
      if (res)
        {
     
     
        if (mois <= 6) 	// date de naissance au 31/12 le plus proche est le 31/12 de l'année précédente.
        	{
        	document.forms["result_rpfa"].elements[element].value = jour + "/" + mois + "/" + annee;
            document.forms["result_rpfa"].elements[id1].value = 2010 - annee + 1 ;
        	}
        else		// date de naissance au 31/12 le plus proche est le 31/12 de l'année en cours.
        	{
                document.forms["result_rpfa"].elements[element].value = jour + "/" + mois + "/" + annee;
                document.forms["result_rpfa"].elements[id1].value = 2010 - annee;
        	}
        			//prendre indice ("date" + i) afin de remplir la case age correspondante ("age" + i)
        if (document.forms["result_rpfa"].elements[id1].value < 0)
        	{
        	document.forms["result_rpfa"].elements[id1].value = 0;
        	}
     
        }
      else
        {
        alert("La date de naissance entrée n'est pas valide(elle doit etre de la forme jj/mm/aaaa ou un jour/mois n'est peut-être pas correct)");
        document.forms["result_rpfa"].elements[element].focus();
        }
      }
    //return res;
    }
    Dans le genre complexe et inutile, je te conseille de laisser tomber ta fonction et de prendre quelque chose de bien plus léger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    function checkDate(datestr) {
       function pi(s) {return parseInt(s,10)}
       var n = datestr.split(/[\/\-]/); //numbers in the date
       var dc=new Date(n[2],pi(n[1])-1,n[0]); //datecheck
     
        return pi(n[0])==dc.getDate() && pi(n[1])-1==dc.getMonth() && pi(n[2])==dc.getFullYear();
     
     
    }
     
     
    document.write([
        checkDate('10/12/1923'), // <= true
        checkDate('32/11/1999'), // <= false
        checkDate('29/02/1999'), // <= false
        checkDate('29/02/2000'), // <= true
        checkDate('29/02/1900'), // <=false, et oui 1900 n'est pas une année bissextile
        checkDate('29/02/2004'), // <= true
    ].join('<br>'));
    exemple ici : http://www.jsfiddle.net/Gatsu35/NrWes/4/

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    C'est gentil mais elle ne marche pas et ne fait pas ce que je veux qu'elle face.

    Apres je sais que c'est long mon truc mais elle a marché c'et pour ça que je veux comprendre pourquoi ça marche plus.
    Apres si tu connais une fonction qui fait la meme chose que la mienne mais en plus court je suis preneur.

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par kratos60 Voir le message
    C'est gentil mais elle ne marche pas
    Montre un peu comment tu l'as implémentée chez toi (pour faire le lien avec ton formulaire et son input, notamment)

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 638
    Points : 66 667
    Points
    66 667
    Billets dans le blog
    1
    Par défaut
    et c'est pas dans la FAQ ni les contributions ?????
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Points : 496
    Points
    496
    Par défaut
    La réponse dans la FAQ n'est pas à jour :
    http://javascript.developpez.com/faq...erifFormatDate
    En plus elle fait un Date.getYear au lieu d'un Date.getFullYear

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 638
    Points : 66 667
    Points
    66 667
    Billets dans le blog
    1
    Par défaut
    tu nous en fais un update duke ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Points : 496
    Points
    496
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    tu nous en fais un update duke ?
    la flême

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par dukej Voir le message
    la flême


    Dommage...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. [PHP 5.2] fonction permettant de verifier une date
    Par marclas dans le forum Langage
    Réponses: 3
    Dernier message: 14/10/2010, 08h41
  2. [Dates] Verifier une date
    Par Seth77 dans le forum Langage
    Réponses: 4
    Dernier message: 13/03/2006, 12h17
  3. afficher le jour en fonction d'une date
    Par oceane751 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 05/03/2006, 22h20
  4. [Dates] message en fonction d'une date
    Par chouchouboy dans le forum Langage
    Réponses: 14
    Dernier message: 24/02/2006, 17h31
  5. Réponses: 2
    Dernier message: 03/10/2005, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo