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 :

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.