

new!








|
|
|
 |
| > Controles sur les dates javascript |
[ Posté par mjs21 ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 25-06-2008 à 10:41 | 1 messages ]
  Bonjour,
Je souhaiterais effectuer deux test sur des dates en javascript mais celà ne fonctionne malheuresement pas.
J'ai deux dates : datedeb / datefin
que je recupère dans deux champs textes (datedeb et datefin) au format JJ/MM/AAAA à l'aide d'un script qui affiche un calendrier.
Je souhaiterais deux test 
- La date de début ne doit pas être inférieure à la date du jour actuel
- La date de fin ne peut pas être antérieure à la date de début
Voici le code du formulaire :
<form name="reservation" method="post" action="modif_dates.php?mod=1&num=<? echo $num;?>" onSubmit="return checkForm()">
<p>
Date début :
<input type="text" onclick="ds_sh(this);" readonly="readonly" title="Date de fin" name="datedeb" onClick="" value="<? echo $datedeb;?>"/>
</p>
<p>
Date fin : <input type="text" onclick="ds_sh(this);" readonly="readonly" title="Date de fin" name="datefin" onClick="" value="<? echo $datefin;?>"/>
</p>
<p>
<input type="submit" name="Submit" value="Modifier" title="Enregistrer votre demande"/>
<input type="button" name="redirection" value="Annuler" onClick="javascript:location.replace('liste_prets.php');"/>
</p>
</form>
|
|
et mon script de verification actuel qui ne fonctionne pas :
<script language="javascript" type="text/javascript">
function checkForm() {
var errorMsg = "";
if(document.reservation.datedeb.value > document.reservation.datedeb.value){
errorMsg += "\n - Attention, la date de debut ne peut pas etre anterieure a la date de fin !";
}
if (errorMsg != ""){
barre = "\n\n*********************************************************\n";
msg = "********************************************************* \n";
msg += "Attention : \n";
errorMsg += alert(msg + errorMsg + barre);
return false;
}else{
return true;
}
}
</script>
|
|
Si quelqu'un peut me filer un coup de pouce 
Merci par avance,
Cordialement,
Emmanuel
________________ Sauvez un arbre, mangez un castor
 
|
|
|
[ Posté par jparia ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 25-06-2008 à 12:52 | 530 messages ]
  |
 Slt,
Quelques fonctions personnelles:
/*Contrôle le format d'une date jj/mm/aaaa et retourne vrai ou faux*/
function isDate(wDate){
var wChaine=new String(wDate);
if(wChaine.length!=10){return false;}
if(isNaN(wChaine.substr(0,2))||isNaN(wChaine.substr(3,2))||isNaN(wChaine.substr(6,4))){return false;}
if(wChaine.substr(2,1)!="/"||wChaine.substr(5,1)!="/"){return false;}
if(parseFloat(wChaine.substr(3,2))>12){return false;}
if(parseFloat(wChaine.substr(6,4))<1900){return false;}
if(parseFloat(wChaine.substr(6,4))%4==0&&parseFloat(wChaine.substr(6,4))%100!=0||parseFloat(wChaine.substr(6,4))%400==0){var wFev=29;}else{var wFev=28;}
var wNbJours=new Array(31,wFev,31,30,31,30,31,31,30,31,30,31);
if(parseFloat(wChaine.substr(0,2))>wNbJours[parseFloat(wChaine.substr(3,2))-1]){return false;}
return true;
}
/*Retourne la différence en jour entre 2 dates au format jj/mm/aaaa*/
function DateDiff(wDu, wAu){
var wDateDu=new String(wDu);
var wDateAu=new String(wAu);
if(!isDate(wDateDu)){return 0;};
if(!isDate(wDateAu)){return 0;};
var wTabDateDu=wDateDu.split("/");
var wTabDateAu=wDateAu.split("/");
var wNbMsJour=1000*60*60*24;
wDateDu=new Date();
wDateDu.setDate(parseFloat(wTabDateDu[0]));
wDateDu.setMonth(parseFloat(wTabDateDu[1])-1);
wDateDu.setFullYear(parseFloat(wTabDateDu[2]));
wDateAu=new Date();
wDateAu.setDate(parseFloat(wTabDateAu[0]));
wDateAu.setMonth(parseFloat(wTabDateAu[1])-1);
wDateAu.setFullYear(parseFloat(wTabDateAu[2]));
var wNbJours=parseInt(wDateAu.getTime()/wNbMsJour)-parseInt(wDateDu.getTime()/wNbMsJour);
return wNbJours;
}
|
|
[Message édité par jparia le 25-06-2008 à 12:59]
________________ Seule la compréhension permet d'avancer.
Ah! et puis on a pas toujours raison, mais un p'tit merci nous fait toujours du bien.
| [ Posté par guySk ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 25-06-2008 à 15:24 | 713 messages ]
  Pour la vérification des dates, j'avais pondu un truc, mais juste avant d'envoyer, coupure de courant due à l'orage, reboot, et manque de pots, pas de restauration de la session firefox, donc je recommence:
s_date1 = document.reservation.datedeb.value;
s_date2 = document.reservation.datefin.value;
//format americain des dates:
s_date_a = s_date1.split("/");
s_date1 = s_date_a[1] + "/" + s_date_a[0] + "/" +s_date_a[2];
s_date_a = s_date2.split("/");
s_date2 = s_date_a[1] + "/" + s_date_a[0] + "/" +s_date_a[2];
date_deb = new Date(s_date1);
date_fin = new Date(s_date2);
//On fait la comparaison
if(date_deb >date_fin){
//error
}
|
|
________________ a'++'a
|
|
Services email :
  Vous devez vous identifier pour profiter des services par email du forum.
|

|