laubro
Messages postés186Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention 9 juillet 2013
-
29 mars 2007 à 18:01
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 2017
-
30 mars 2007 à 09:39
Bonjour
voilà, j'ai 2 champs date "Y-m-d" qui se remplissent via un calendar, le but étant d'avoir une date de début et de fin.
ce que j'aimerais pouvoir faire, c'est que SI le premier champ est changé (pour le moment date du jour J par défaut) le 2em champs (J+1 par defaut) se mette a jour dynamiquement à j+1 par rapport au 1er champs
stfou
Messages postés450Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention18 avril 20073 29 mars 2007 à 21:04
Bonsoir,
Tout simplement tu fait par exemple champ année2=année1+1, champ mois2=mois1+1, champ jour2=jour1+1 etc...
et tu appelle ça avec un onchange ou un keydown.
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 30 mars 2007 à 09:39
Bonjour, à mon avis c'est un peu plus complexe qu'il n'y paraît, en effet, il faut tenir compte de pas mal d'informations, si l'utilisateur saisie le 28 février , il faut tenir compte de l'année pour calculer le jour d'après ( si pas bissextile alors on sera le 01 mars et sinon le 29 Février ).
Le traitement devrait être placé sur un onblur sur le premier champs.
Du coup, il "suffirait" de rajouter un prototype sur Date :
du style :
/**
* prototype sur date, ajout de jour
*
* @param dayAdd
* nombre de jour à ajouter.
*/
Date.prototype.addDay = function ( dayAdd ){
return new Date ( this.getTime() + dayAdd * 24 * 60 * 60 * 1000 );
}
et au changement ( onblur ) de champs, rajouter le traitement qui va bien pour ajouter un jour...
/**
* Ajoute un jour à la date d'entrée.
*
* @param dateIn
* Date d'entrée.
*/
function addDay(dateIn){
var content = dateIn.split("-");
var dateContent = new Date ( content[0], content[1] - 1, content[2] );
document.getElementById("test2").value = dateContent.addDay(1);
}
Bien entendu, il faut adapeter l'id de reception ( pour mon test, j'ai pris test2)