Celle-ci devrait faire l'affaire :
function isDateValid(chaineDate) {
// Je regarde tout d'abord si la chaîne n'est pas vide, sinon pas la peine d'aller plus loin
if (chaineDate == "") return false
// J'utilise une expression régulière pour normaliser ma date en "JJ/MM/AAAA"
// au cas où la date aurait été saisie au format "JJ-MM-AAAA" ou "JJ.MM.AAAA".
chaineDate = chaineDate.replace(/(-|\.)/g, "/")
// Je teste ensuite si la date contient des entiers.
// Le jour et le mois inférieurs à 10 peuvent être écrits sans le zéro.
// L'année doit être sur 4 chiffres.
if (chaineDate.search(/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/) == -1) return false
// On crée un tableau dans lequel on récupère les jour mois année
var ladate = chaineDate.match(/\d{2,4}/g)
// Maintenant on crée la date correspondante. Attention, les mois sont étalonnés de 0 à 11
var unedate = new Date(eval(ladate[2]),eval(ladate[1])-1,eval(ladate[0]))
// Bug de l'an 2000 oblige, lorsque je récupère l'année, je n'ai pas toujours 4 chiffres selon les navigateurs, je rectifie donc ici le tir.
var annee = unedate.getYear()
if ((Math.abs(annee)+"").length < 4) annee = annee + 1900
// Il ne reste plus qu'à vérifier si le jour, le mois et l'année obtenus sont les mêmes que ceux saisis par l'utilisateur.
return ((unedate.getDate() == eval(ladate[0])) && (unedate.getMonth() == eval(ladate[1])-1) && (annee == eval(ladate[2])))
}
Ah, c'est quand-même dur de s'y mettre aux expressions, régulières, mais ça rend bien des services quand-même.
Ce message a été modifié par David Vincent - 29 juillet 2004 - 16:21.


Haut










