Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/12/2010, 13h06   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 20
Points : 3
Points : 3
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 :
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;
}
kratos60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2010, 14h18   #2
Membre expérimenté
 
Duke Jikel
Inscription : mai 2010
Messages : 339
Détails du profil
Informations personnelles :
Nom : Duke Jikel

Informations forums :
Inscription : mai 2010
Messages : 339
Points : 546
Points : 546
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 :
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 :
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/
dukej est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2010, 14h46   #3
Invité de passage
 
Inscription : novembre 2010
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 20
Points : 3
Points : 3
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.
kratos60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2010, 17h15   #4
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 073
Points : 4 073
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

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2010, 17h18   #5
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 004
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 004
Points : 45 087
Points : 45 087
et c'est pas dans la FAQ ni les contributions ?????
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 07h09   #6
Membre expérimenté
 
Duke Jikel
Inscription : mai 2010
Messages : 339
Détails du profil
Informations personnelles :
Nom : Duke Jikel

Informations forums :
Inscription : mai 2010
Messages : 339
Points : 546
Points : 546
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
dukej est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 08h08   #7
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 004
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 004
Points : 45 087
Points : 45 087
tu nous en fais un update duke ?
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 14h12   #8
Membre expérimenté
 
Duke Jikel
Inscription : mai 2010
Messages : 339
Détails du profil
Informations personnelles :
Nom : Duke Jikel

Informations forums :
Inscription : mai 2010
Messages : 339
Points : 546
Points : 546
Citation:
Envoyé par SpaceFrog Voir le message
tu nous en fais un update duke ?
la flême
dukej est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 15h49   #9
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h04.


 
 
 
 
Partenaires

Hébergement Web