Calcul de date
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
le hollandais volant Messages postés 4998 Date d'inscription Statut Membre Dernière intervention -
le hollandais volant Messages postés 4998 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
Je ne m'y connait pas en javascript mais sollicite votre aide afin de faire afficher une date.
J'ai un textebox qui contient "01/01/2015"
Un autre contient "2"
Je voudrait que lorsque je onChange, le troisième textbox affiche "03/01/2015"
Seulement là il m'affiche 12
Pouvez-vous m'aider svp ?
Merci de votre aide !
Je ne m'y connait pas en javascript mais sollicite votre aide afin de faire afficher une date.
J'ai un textebox qui contient "01/01/2015"
Un autre contient "2"
Je voudrait que lorsque je onChange, le troisième textbox affiche "03/01/2015"
Seulement là il m'affiche 12
Pouvez-vous m'aider svp ?
<input type="text" name="date_actuel" id="date_actuel" size="15" value="01/01/2015"><br> <input type="text" name="Nombre" id="Nombre" size="15" value="10" onChange="javascript:ajout();"><br> <input type="text" name="resultat" id="resultat" size="15">
<script> function addDaysToDate(old_date, delta_days) { var split_date = old_date.split('/'); var new_date = new Date(split_date[2], split_date[1]*1 - 1, split_date[0]*1 + delta_days); var new_day = new_date.getDate(); new_day = ((new_day < 10) ? '0' : '') + new_day; var new_month = new_date.getMonth() + 1; new_month = ((new_month < 10) ? '0' : '') + new_month; var new_year = new_date.getYear(); new_year = ((new_year < 200) ? 1900 : 0) + new_year; var new_date_text = new_day + '/' + new_month + '/' + new_year; return new_date_text; } function ajout() { var date_init = document.getElementById("date_actuel").value; var date_nmbr = document.getElementById("Nombre").value; var date_resu = addDaysToDate(date_init, date_nmbr); document.getElementById("resultat").value = date_resu; return(true); } </script>
Merci de votre aide !
A voir également:
- Calcul de date
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Airpods 3 date de sortie - Guide
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
2 réponses
Salut,
Il ne faut pas de majuscule à "onChange". C’est "onchange", tout simplement.
Aussi, pas besoin du "javascript:ajout()". Mets simplement "ajout()", ça suffit.
Ensuite, pour le problème que tu as.
Il se trouve au niveau du "split_date". À ce stade, le "split_date[0]" contient une chaîne de caractère et non un nombre.
du coup, quand tu ajoutes un "2", il est collé à la suite et non additionné.
Il faut donc lire le nombre "2" comme un entier (2) et non pas la chaîne ("2").
Il y a une fonction interne de JavaScript qui est là pour ça : parseInt().
Dans la fonction "addDaysToDate", remplace la 5e ligne :
par ça :
Ça marche chez moi.
Il est possible que tu aies à mettre des "parseInt" partout.
tu peux voir le résultat ici : http://lehollandaisvolant.net/files/js.html
--
Il ne faut pas de majuscule à "onChange". C’est "onchange", tout simplement.
Aussi, pas besoin du "javascript:ajout()". Mets simplement "ajout()", ça suffit.
Ensuite, pour le problème que tu as.
Il se trouve au niveau du "split_date". À ce stade, le "split_date[0]" contient une chaîne de caractère et non un nombre.
du coup, quand tu ajoutes un "2", il est collé à la suite et non additionné.
Il faut donc lire le nombre "2" comme un entier (2) et non pas la chaîne ("2").
Il y a une fonction interne de JavaScript qui est là pour ça : parseInt().
Dans la fonction "addDaysToDate", remplace la 5e ligne :
var new_date = new Date(split_date[2], split_date[1]*1 - 1, split_date[0]*1 + delta_days);
par ça :
var new_date = new Date(split_date[2], split_date[1]*1 - 1, split_date[0]*1 + parseInt(delta_days));
Ça marche chez moi.
Il est possible que tu aies à mettre des "parseInt" partout.
tu peux voir le résultat ici : http://lehollandaisvolant.net/files/js.html
--
Merci le hollandais... j'avais mis
J'ai tout de même gardé ta version
Number()et ça a fonctionné aussi.
J'ai tout de même gardé ta version
parseInt()et merci pour ajout(), je savais pas.
Par contre, j'ai créé 2 volets. Si je renseigne un d'entre les deux, le second m'affiche
Comment y remédier ?
NaN/NaN/NaN
Comment y remédier ?
function ajout(){ document.getElementById("Date_Fin_Prev_01").value = addDaysToDate(document.getElementById("Date_Deb_Prev_01").value, document.getElementById("Date_Nbr_Prev_01").value); document.getElementById("Date_Fin_Real_01").value = addDaysToDate(document.getElementById("Date_Deb_Real_01").value, document.getElementById("Date_Nbr_Real_01").value); document.getElementById("Date_Fin_Prev_02").value = addDaysToDate(document.getElementById("Date_Deb_Prev_02").value, document.getElementById("Date_Nbr_Prev_02").value); document.getElementById("Date_Fin_Real_02").value = addDaysToDate(document.getElementById("Date_Deb_Real_02").value, document.getElementById("Date_Nbr_Real_02").value); document.getElementById("Date_Fin_Prev_03").value = addDaysToDate(document.getElementById("Date_Deb_Prev_03").value, document.getElementById("Date_Nbr_Prev_03").value); document.getElementById("Date_Fin_Real_03").value = addDaysToDate(document.getElementById("Date_Deb_Real_03").value, document.getElementById("Date_Nbr_Real_03").value); return(true);}
<input type="text_centre" name="Date_Deb_Real_01" id="Date_Deb_Real_01" class="datepicker"> <input type="text_centre" name="Date_Fin_Real_01" id="Date_Fin_Real_01" class="read" readonly> <input type="text_droite" name="Date_Nbr_Real_01" id="Date_Nbr_Real_01" onKeyUp="ajout();" value="0" onclick="this.select();"> <br><br> <input type="text_centre" name="Date_Deb_Real_02" id="Date_Deb_Real_02" class="datepicker"> <input type="text_centre" name="Date_Fin_Real_02" id="Date_Fin_Real_02" class="read" readonly> <input type="text_droite" name="Date_Nbr_Real_02" id="Date_Nbr_Real_02" onKeyUp="ajout();" value="0" onclick="this.select();">
"NaN" signifie « Not a Number ».
Ça signifie que la variable que tu manipule n’est pas un nombre mais autre chose (lettres, tableaux, booleans…), et donc que la opérations mathématiques ne sont pas possible.
Il doit y avoir un problème de "parseInt()" quelque part.
Je vois aussi que dans ton HTML, tu n’as que 2 séries de champs, alors que ton JS en a 3 (Date_Fin_Prev_03, etc.).
Vires cette partie là et essaye : si le champ #Date_Fin_Prev_03 n’existe pas, il retourne des erreurs.
Ça signifie que la variable que tu manipule n’est pas un nombre mais autre chose (lettres, tableaux, booleans…), et donc que la opérations mathématiques ne sont pas possible.
Il doit y avoir un problème de "parseInt()" quelque part.
Je vois aussi que dans ton HTML, tu n’as que 2 séries de champs, alors que ton JS en a 3 (Date_Fin_Prev_03, etc.).
Vires cette partie là et essaye : si le champ #Date_Fin_Prev_03 n’existe pas, il retourne des erreurs.