Mise à jour champs date dynamique

laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 29 mars 2007 à 18:01
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 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

est possible ?
Merci
Laubro[8D]

2 réponses

stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
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.

<hr /><hr />
<
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
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)

A voir
[o-_-o]
0
Rejoignez-nous