par
macgawel » 10 janv. 2011, 19:18
J'ai l'impression que tu te compliques les choses.
1. Décompose :
Utilises une fonction RecupDate (element), une fonction VerifDate(jours,mois,annee) et une fonction calculAge(date) - en plus tu pourras réutiliser ton code
2. Il est vraiment nécessaire de laisser les gens mettre le format qu'ils veulent ?
C'est assez rare de pouvoir rentre ce qu'on veux, en général on nous demande de saisir la date au format JJ/MM/AAAA (par exemple)
Si c'est vraiment indispensable, tu peux simplifier un peu cette partie du code (en partant du principe que l'utilisateur utilise toujours le même séprateur et écrit sa date au format français, pas américain MM/JJ/AAAA) :
Code : Tout sélectionner
function RecupDate(element,id1) {
/*
Il faudrait tester plus précisément le contenu (existance, longueur, etc.)
on teste si le 3ème caractère est un chiffre
Si non, c'est le séparateur
Si oui, il n'y a pas de séparateur
*/
var tmp = document.forms["result_rpfa"].elements[element].value;
var separateur = tmp[2];
if (isNaN(separateur)) {
TabChaine = machaine.split(sep);
}
else {
TabChaine[0] = tmp.substr(0,2);
TabChaine[1] = tmp.substr(2,2);
TabChaine[2] = tmp.substr(4);
}
if (TabChaine[2].length == 2) {
TabChaine[2] = "20" + TabChaine[2];
}
}
Ensuite, il faut tester ta date.
Pour ça, il y a une astuce à connaître :
JS est capable de calculer une date à partir de n'importe quels nombres, et d'en faire une correcte.
Par exemple, si tu lui refiles le 32/12/2010, il va créer la date du 01/01/2011 (31/12/2010 + 1 jour).
=> il suffit de comparer les trois valeurs données (jours, mois, années) de ta date de départ avec la date créée à partir d'eux.
Code : Tout sélectionner
function verif(j,m,a){
m=m-1;
d=new Date(a,m,j);
if (d.getFullYear()!=a || d.getMonth()!=m ||d.getDate() !=j) {
alert ("la date n'est pas bonne");
}
}
Ce n'est pas moi qui ai trouvé ce code, je l'avais récupéré sur le net mais je ne sais plus où

J'ai l'impression que tu te compliques les choses.
1. Décompose :
Utilises une fonction RecupDate (element), une fonction VerifDate(jours,mois,annee) et une fonction calculAge(date) - en plus tu pourras réutiliser ton code :D
2. Il est vraiment nécessaire de laisser les gens mettre le format qu'ils veulent ?
C'est assez rare de pouvoir rentre ce qu'on veux, en général on nous demande de saisir la date au format JJ/MM/AAAA (par exemple)
Si c'est vraiment indispensable, tu peux simplifier un peu cette partie du code (en partant du principe que l'utilisateur utilise toujours le même séprateur et écrit sa date au format français, pas américain MM/JJ/AAAA) :
[code]function RecupDate(element,id1) {
/*
Il faudrait tester plus précisément le contenu (existance, longueur, etc.)
on teste si le 3ème caractère est un chiffre
Si non, c'est le séparateur
Si oui, il n'y a pas de séparateur
*/
var tmp = document.forms["result_rpfa"].elements[element].value;
var separateur = tmp[2];
if (isNaN(separateur)) {
TabChaine = machaine.split(sep);
}
else {
TabChaine[0] = tmp.substr(0,2);
TabChaine[1] = tmp.substr(2,2);
TabChaine[2] = tmp.substr(4);
}
if (TabChaine[2].length == 2) {
TabChaine[2] = "20" + TabChaine[2];
}
}[/code]
Ensuite, il faut tester ta date.
Pour ça, il y a une astuce à connaître :
JS est capable de calculer une date à partir de n'importe quels nombres, et d'en faire une correcte.
Par exemple, si tu lui refiles le 32/12/2010, il va créer la date du 01/01/2011 (31/12/2010 + 1 jour).
=> il suffit de comparer les trois valeurs données (jours, mois, années) de ta date de départ avec la date créée à partir d'eux.
[code]function verif(j,m,a){
m=m-1;
d=new Date(a,m,j);
if (d.getFullYear()!=a || d.getMonth()!=m ||d.getDate() !=j) {
alert ("la date n'est pas bonne");
}
} [/code]
Ce n'est pas moi qui ai trouvé ce code, je l'avais récupéré sur le net mais je ne sais plus où :oops: