Le bouton "Vérifier" contrôle si la date de fin est bien superieure à la date de début (OK sinon KO).
Les contrôles ne sont pas bloquants, et en supprimer un n'empêche pas le reste de fonctionner.
Les messages peuvent bien sûr être remplacés par des traitements spécifiques.
Compatible FF.
Le code :
Entre <HEAD> et </HEAD> :
- Code: Tout sélectionner
<script type="text/javascript">
<!--
// Script proposé par Marcus Eric - V1 : 2005
// V2 : 08/2006
// Enleve le '0' des nb < 10
function ConvNum(tabDeDate) {
for (i=0; i<tabDeDate.length; i++)
tabDeDate[i] = (tabDeDate[i].charAt(0)=='0')?tabDeDate[i].charAt(1):tabDeDate[i];
return tabDeDate;
}
// Retourne true si valeur_date est postérieure à la date du jour
function DateFuture(valeur_date)
{var tabDate = valeur_date.split('/');
var datAujourdhui = new Date();
tabDate = ConvNum(tabDate);
if (valeur_date.length > 0)
{ var datTest_Date = new Date(parseInt(tabDate[2]), parseInt(tabDate[1])-1, parseInt(tabDate[0]));
if (datTest_Date <= datAujourdhui) return false;
}
return true;
}
// Retourne 1 si valeur_date1 < valeur_date2
// 0 si valeur_date1 = valeur_date2
// -1 si valeur_date1 > valeur_date2
function Compare_Dates(valeur_date1, valeur_date2)
{var tabDate1 = valeur_date1.split('/');
tabDate1 = ConvNum(tabDate1);
var datTest_Date1 = new Date(parseInt(tabDate1[2]), parseInt(tabDate1[1])-1, parseInt(tabDate1[0]));
var tabDate2 = valeur_date2.split('/');
tabDate2 = ConvNum(tabDate2);
var datTest_Date2 = new Date(parseInt(tabDate2[2]), parseInt(tabDate2[1])-1, parseInt(tabDate2[0]));
return (datTest_Date2-datTest_Date1==0)?"0":(datTest_Date2-datTest_Date1<0)?"-1":"1";
}
// Vérifie le format d une date saisie
function Verif_Date(valeur_date)
{ var tabDate = valeur_date.split('/');
tabDate = ConvNum(tabDate);
var datTest_Date = new Date(parseInt(tabDate[2]), parseInt(tabDate[1])-1, parseInt(tabDate[0]));
if (valeur_date.length>10)
{ alert('Ne dois pas dépasser 10 caractères.');
return false;
}
for (i=0; i<valeur_date.length; i++)
{ if (valeur_date.charAt(i) == ' ')
{ alert("La date ne doit pas contenir d\'espaces.");
return false;
}
}
if (valeur_date.length > 0)
{ if ((parseInt(tabDate[0]) != datTest_Date.getDate()) || (parseInt(tabDate[1]) != parseInt(datTest_Date.getMonth())+1))
{ alert("Veuillez saisir la date au format 'J/M/SSAA' ou JJ/MM/SSAA.\n\nex : 6/6/2004 ou 06/06/2004");
return false;
}
if ((tabDate[2].length != 4) || (parseInt(tabDate[2]) < 1980) || (parseInt(tabDate[2]) > 2099))
{ alert("Veuillez saisir l'année sur 4 chiffres.\n\nElle doit être comprise entre 1980 et 2099.");
return false;
}
}
return true;
}
function ControleDates() {
var strMsg='';
if (Verif_Date(document.getElementById('debut').value) && Verif_Date(document.getElementById('fin').value)) {
switch (Compare_Dates(document.getElementById('debut').value, document.getElementById('fin').value)) {
case "-1" :
alert('KO:\nDate début > Date fin'); break;
case "0" :
alert('KO:\nDate début = Date fin'); break;
case "1" :
alert('OK:\nDate début < Date fin'); break;
default :
alert('Comparaison impossible');break;
}
}
}
//-->
</script>
Entre <BODY> et </BODY> :
- Code: Tout sélectionner
<form>
La date de début doit être supérieure à la date de fin (sinon : KO)<br /><br />
Date début : <input type="text" id="debut" name="debut" size="10" onchange="if (!Verif_Date(this.value)) this.focus(); else if (!DateFuture(this.value)) alert('La date est dépassée.');"><br />
Date fin : <input type="text" id="fin" name="fin" size="10" onchange="if (!Verif_Date(this.value)) this.focus(); else if (!DateFuture(this.value)) alert('La date est dépassée.');"><br />
<br /><br />
<input type="button" value="Vérifier" onClick="ControleDates();">
</form>
