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
   |  
function TestDate(source, args){
    //on supprimer les espaces de la saisie
    var lValue  = args.Value.replace(/ /g,"")
 
    // si le champ n'est pas vide
    if (lValue != ""){
        //format dd/mm/yy, dd.mm.yy, dd-mm-yy
        var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/ 
        //format dd/mm/yyyy, dd/mm/yyyy, dd.mm.yyyy, dd-mm-yyyy
        var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
 
        //si la date n'est pas conforme à un des deux formats
        if ( (reg1.test(lValue) == false) && (reg2.test(lValue) == false) ) {
            //on modifie le errormessage du validator
            source.attributes("errormessage").nodeValue = "La date est invalide, le format doit être jj/mm/aaaa ou jj/mm/aa";
            args.IsValid = false;
        }else{
            //test de l'intervalle
 
            //on éclate la date
            var date = lValue.split("/");
            if ( date.length == 1 ) { 
                date = lValue.split("-"); 
                if ( date.length == 1 ) { date = lValue.split("."); } 
            }
 
            //on construit les dates
            var Now = new Date();
            var MaxDate = new Date(Now.getFullYear()-2,11, 31); // 31/12/anne en cours - 2
            var MinDate = new Date(Now.getFullYear()-25,00, 01);// 01/01/annee en cours - 25
            var DateSaisie = new Date(date[2], date[1]-1, date[0]);
 
            // MinDate <= DateSaisie <= MaxDate ?
            if ( (MinDate <= DateSaisie) && (DateSaisie <= MaxDate) ) {
                args.IsValid = true;
            }else{
                source.attributes("errormessage").nodeValue = "L'enfant doit avoir entre 2 et 25 ans au 31 Décembre de l'année en cours";
                args.IsValid = false;
            }
        }
    }else{
        source.attributes("errormessage").nodeValue = "La date de naissance est obligatoire.";
        args.IsValid = false;
    }
} | 
Partager