Bonjour,
J'essaie de créer une fonction qui permette de vérifier la date entrée par l'utilisateur dans un formulaire et de l'établir comme valide ou invalide.
J'ai décidé d'éviter de m'en remettre au datepicker pour devenir un peu plus autonome quand je code en js...
Je sais que plusieurs topics ont été créés à ce sujet mais j'aurais besoin que des personnes averties puissent me dire si je suis sur la bonne piste et/ou si j'oublie des choses...
Je débute, donc pardonnez par avance les éventuelles erreurs de raisonnement et de formulation...
J'ai pensé dans un premier temps créer une expression régulière et j'avais construit ma fonction comme suit :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 date_utilisateur = document.getElementById('date').value; jour_date_utilisateur = parseInt(date_utilisateur.substr(0,2)); mois_date_utilisateur = parseInt(date_utilisateur.substr(3,2)); annee_date_utilisateur = parseInt(date_utilisateur.substr(6,4)); jour_date_utilisateur = document.getElementById('date').value; var regJour = new RegExp ("^([0-2]{1}[0-9]{1}|[3]{1}[0-1]{1})$"); regJour.test(jour_date_utilisateur); mois_date_utilisateur = document.getElementById('date').value; var regMois = new RegExp ("^(0[1-9]{1}|1[0-2]{1})$"); regMois.test(mois_date_utilisateur); annee_date_utilisateur = document.getElementById('date').value; var regAnnee = new RegExp ("^(20[1-9]{1}[0-9]{1})$"); regAnnee.test(annee_date_utilisateur);
La première chose, c'est que j'ai un souci avec les RegExp dans la mesure où je ne comprends pas où renseigner que si le ou les test(s) est/sont false si c'est le cas...
Puis ça ne me convient pas, parce que d'une part l'utilisateur a toujours la possibilité d'inscrire des aberrations comme 00/00/2099, mais en plus, je ne sais pas non plus vérifier qu'il ne va pas saisir une date erronée comme 30/02/2013.
Alors j'envisage maintenant de jouer sur des correspondances mois/jour :
j'ai juste un problème parce que je manque de théorie pour savoir comment mettre en rapport les valeurs d'un tableau que j'intitulerais correspJourMois = ("",31,28,31,30,31,30,31,31,30,31,30,31) avec la date que renvoie la variable "mois_date_utilisateur".
=> Je voudrais que si mon utilisateur a opté pour une date comme xx/03/xxxx cela aille repêcher dans mon tableau que le nombre max que peut saisir l'utilisateur à ce niveau xx/03/xxxx (jour_date_utilisateur) est 31.
j'ai dans l'idée que ça doit ressembler à un truc genre :
Code:
1
2
3
4
5
6 var correspJourMois = ["",31,28,31,30,31,30,31,31,30,31,30,31]; if (mois_date_utilisateur > correspJourMois[mois_date_utilisateur]) { alert("Votre date est invalide !"); return false; } else { return true; }
Est-ce que ça vous semble juste?? Mon script ne fonctionne pas...
je n'ai même pas une alerte en mettant une date de type 32/03/2013 :?
(Je pensais continuer le script avec l'idée qui figure là bas pour le contrôle des années bissextiles : http://www.developpez.net/forums/d13...e-champs-date/ )
Est-ce que d'après vous, j'oublie quelque chose pour que mon script soit parfaitement fonctionnel?
Merci pour votre aide ! ;)