Skip to main content
Version: Next

Comparaison de dates dans un champ de formulaire

Ce code permet de comparer 2 dates, au moment de la saisie d'un champ Date sur le quel le contrôle doit être fait.

Ici, la date de réception de la réponse (FAIDateReceptionReponse) ne doit pas être antérieure à la date de la réponse (FAIDateReponse).

Dans les propriétés avancées du champ Date sur lequel le contrôle doit être fait, ajouter les options javacript & javascript:oninit comme indiqué ci dessous :

image.png

Code à insérer dans javascript :

function OnDateEventChange2()
{
var fDateReponse = CurrentDocument.GetBackendValue("FAIDateReponse");
var fDateReceptionReponse = APSGetFieldByName("FAIDateReceptionReponse");

if(fDateReceptionReponse.value.length<10)
return;
var d2 = getDate(fDateReponse);
var d1 = getDate(fDateReceptionReponse.value);
if(compare(d1, d2)<0)
{
alert("La date de réception de réponse ne peut pas être antérieure à la date de la réponse !");
fDateReceptionReponse.value="";
}

}


//On suppose que la date entrée a été validée auparavant
//au format dd/mm/yyyy
function getDate(strDate){
day = strDate.substring(0,2);
month = strDate.substring(3,5);
year = strDate.substring(6,10);
d = new Date();
d.setDate(day);
d.setMonth(month-1);
d.setFullYear(year);
return d;
}

//Retourne:
// 0 si date_1=date_2
// 1 si date_1>date_2
// -1 si date_1<date_2

function compare(date_1, date_2){
diff = date_1.getTime()-date_2.getTime();
return (diff==0?diff:diff/Math.abs(diff));

Dans ce code, il faut bien entendu adapter le nom des champs à comparer (ici FAIDateReceptionReponse et FAIDateReponse).

Code à insérer dans le Javacript:onInit :

APSAttachEventToElement( APSGetFieldByName("FAIDateReceptionReponse") , "change", OnDateEventChange2 );

Dans ce code, il faut mentionner le nom du champ courant (ici FAIDateReceptionReponse) pour que le contrôle se fasse au moment de la saisie sur ce champ.