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 :
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é :
<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 ?
Partager