Bonjour,

Je viens de réaliser un formulaire de recherche pour lequel j'ai besoin de contrôler un champ texte contenant une date. J'ai utilisé ce script issu de la FAQ Javascript.

Tout fonctionne sous IE6 et Firefox 2.0 (imposés). Mais j'obtiens un message dans la console d'erreur de Firefox :



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
/**
 * Fonction CheckDate()
 * 
 * Vérifie la syntaxe d'une date
 * http://javascript.developpez.com/faq/?page=formObjs#VerifDate
 * auteur : simone.51
 * 
 */
function CheckDate(d) {
      // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
      // Le séparateur est défini dans la variable separateur
      var amin=1999; // année mini
      var amax=2005; // année maxi
      var separateur="/"; // separateur entre jour/mois/annee
      var j=(d.substring(0,2)); // ## LA LIGNE 108 QUI GENERE L'ERREUR
      var m=(d.substring(3,5));
      var a=(d.substring(6));
      var ok=1;
 
      if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {
         alert("Le jour n'est pas correct."); ok=0;
      }
 
      if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {
         alert("Le mois n'est pas correct."); ok=0;
      }
 
      if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) {
         alert("L'année n'est pas correcte."); ok=0;
      }
 
      if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur))
  && (ok==1) ) {
         alert("Les séparateurs doivent être des "+separateur); ok=0;
      }
 
      if (ok==1) {
         var d2=new Date(a,m-1,j);
         j2=d2.getDate();
         m2=d2.getMonth()+1;
         a2=d2.getFullYear();
         if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
            alert("La date "+d+" n'existe pas !");
            ok=0;
         }
      }
      return ok;
}
La fonction est appelée depuis l'évènement onblur du champs texte associé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<input type="text" onblur="CheckDate(this.value);" id="dateEvenement" maxlength="10" />
J'ai essayé de forcer d en string en ajoutant d.toString(); mais ça n'a pas fonctionné.

Quelqu'un voit d'où ça peut venir ?