Petit script mais efficace pour valider les dates

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 914 fois - Téléchargée 22 fois

Contenu du snippet

ce code permet de valider une date si elle est conforme au calendrier, elle retourne un booléen, exemple si on met 31/04/2007 elle retourne false car le moi d'avril de l'année 2007 fait 30jours seulement

Source / Exemple :


function isValidDate(d) {
		var dateRegEx = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
		return d.match(dateRegEx);
	}

Conclusion :


exemple : vous faite une fonction pour le controle d'un champ de date dans un formulaire du genre :

function controle(f) {
if(f.date_event.value == "" || !isValidDate(f.date_event.value))
alert("Inserer une date valide pour l'evenement.");
else
return true;
return false;
}

puis l'appeler dans le formulaire :
<form name="formulaire" method="post" action="page.php" onSubmit="return controle(this)">

A voir également

Ajouter un commentaire Commentaires
amrounix Messages postés 78 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 12 juillet 2010
26 avril 2008 à 10:37
essaye ca :

function testTypeDate(dateEntree)
{
tst=false;
try
{rc=dateEntree.split("/");nd=new Date(rc[2],(rc[1]-1),rc[0]);
tst=(rc[2]>1800&&rc[2]<2200&&rc[2]==nd.getFullYear()&&rc[1]==(nd.getMonth()+1)&&rc[0]==nd.getDate());
} catch(e) {}
return tst;
}

avec comme paramètre dateEntree = "JJ/MM/AAAA"
tu me dira ce que tu en pense ;-)
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 avril 2007 à 08:33
je ne pensais pas qu'il était possible de contrôler totalement une
date avec une expression régulière ( années bissextiles et le reste )
pas testé complètement, mais impressionnant. @+
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
12 avril 2007 à 20:27
Tu pourrai aussi intégrer directement a ta fonction l'action de vérifier la présence d'un argument (pas null,unedefined,false,"") et l'ajouté en tant que propriété de String :
String.prototype.isValidDate=function(d) {
if(d){
var dateRegEx = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
return d.match(dateRegEx);}else{return false;}
}


Ainsi tu as juste à faire : if(madate.isValidDate) alert("valide"); else alert("invalide");

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.