Problème javascript&html
Résolu
piervi
Messages postés
111
Statut
Membre
-
piervi Messages postés 111 Statut Membre -
piervi Messages postés 111 Statut Membre -
Salut à tous,
J'ai fait un formulaire et j'ai un champ date qui se remplit à l'aide d'un calendrier
Dans l'input de ce champ date, j'aimerais faire un onChange (ou j'appelle un function js) mais vu que le champ est rempli par le biais d'une function javascript, le onChange ne s'applique pas...
Quelqu'un aurait une idée pour que tout ça fonctionne...
Merci d'avance.
C'est urgent parce que j'e dois rendre mon projet demain matin et c'est tout ce qui foire dans mon programme...
piervi
J'ai fait un formulaire et j'ai un champ date qui se remplit à l'aide d'un calendrier
Dans l'input de ce champ date, j'aimerais faire un onChange (ou j'appelle un function js) mais vu que le champ est rempli par le biais d'une function javascript, le onChange ne s'applique pas...
Quelqu'un aurait une idée pour que tout ça fonctionne...
Merci d'avance.
C'est urgent parce que j'e dois rendre mon projet demain matin et c'est tout ce qui foire dans mon programme...
piervi
A voir également:
- Problème javascript&html
- Editeur html - Télécharger - HTML
- Telecharger javascript - Télécharger - Langages
- Espace html - Astuces et Solutions
- Br html ✓ - Forum Webmastering
- Javascript arrondi ✓ - Forum Javascript
3 réponses
En fait, j'ai un champ de formulaire de réservation de gite en ligne
Le premierchamp date (datedeb) est généré par le biais d'un calendrier. le deuxiemen champ est un combo pour sélectionner une durée de séjour (lselectduree) et le dernier, est un champs date qui est en readOnly pour l'utilisateur et qui se génère par le biais de la fonction suivante :
var oneMinute = 60 * 1000
var oneHour = oneMinute * 60
var oneDay = oneHour * 24
var oneWeek = oneDay * 7
function fill_input ()
{
var ldatedeb_input = document.getElementById('ldatedeb');
var ldatefin_input = document.getElementById('ldatefin');
var lselectduree_select = document.getElementById('lselectduree');
var ldatedeb = ldatedeb_input.value;
var lselectduree = lselectduree_select.value;
var ldatefin = null;
//alert ('0');
if(lselectduree && ldatedeb)
{
tab_date = ldatedeb.split('/');
//alert ('1');
if(tab_date.length == 3)
{
var jour = parseInt(tab_date[0], 10);
var mois = parseInt(tab_date[1], 10)-1;
var an = parseInt(tab_date[2], 10);
an = ((an < 100)? 2000+an: an);
var date_obj = new Date(an, mois, jour);
//conversion de la date en ms
var dateInMs = date_obj.getTime()
//ajout du nombre de semaines
if(parseInt(lselectduree,10) != 0)
{
dateInMs += parseInt(lselectduree, 10) * oneDay;
//maj de date_obj
date_obj.setTime(dateInMs)
jour = date_obj.getDate();
mois = date_obj.getMonth() + 1;
an = date_obj.getFullYear();
ldatefin = (jour>9? '': '0') + jour + '/' + (mois>9? '': '0') + mois + '/' + an;
ldatefin_input.value = ldatefin;
}
}
}
}
--------------------------------------------------------------------------
<input type="text" id="ldatedeb" size="12" maxlength="10" class="resableutxt9" onClick="view_microcal(true,ldatedeb,calend,-1,0);" onBlur="view_microcal(false,ldatedeb,calend,-1,0);" onKeyUp="this.style.color=testTypeDate(this.value)?'black':'red'" onselectstart="return false;" onChange="fill_input();" readOnly>
<div id="calend" style="visibility:hidden;position:absolute;border:2px black solid;background:#ffffff;"></div>
</span>
champs datedeb qui affiche un calendar sur le onClick
<select id = "lselectduree" name="lselectduree" class="resableutxt9" onChange="fill_input();">
champs de sélection de la durée avec du code asp derrière... marche très bien
<input type="text" id="ldatefin" size="12" maxlength="10" class="resableutxt9" style="cursor:pointer;" onMouseDown="return false;" onselectstart="return false;" readOnly>
champs ldatefin remplit par le biais de la première fonction
Voila le onChange du premier input ne fonctionne pas...
Si tu veux tester, va sur
http://www.guiltour.com/resa_dev_140507/sources/resa/modele.asp?lg=fr&resid=0&wid=guiltour&siteback=javascript:window.close(
En fait, si tu sélectionne l'un et après l'autre ça marche mais ce que je n'arrive pas à faire, c'est que si la durée est déjà sélectionnée et que je change de date, ça n'actualise pas le champ ldatefin, il attend de nouveau qu'on clic sur la durée pour se lancer...
Si c'est trop mal expliqué, dis moi ce que tu comprends pas ^^
Merci bien de t'intéresser à mon problème
Piervi
Le premierchamp date (datedeb) est généré par le biais d'un calendrier. le deuxiemen champ est un combo pour sélectionner une durée de séjour (lselectduree) et le dernier, est un champs date qui est en readOnly pour l'utilisateur et qui se génère par le biais de la fonction suivante :
var oneMinute = 60 * 1000
var oneHour = oneMinute * 60
var oneDay = oneHour * 24
var oneWeek = oneDay * 7
function fill_input ()
{
var ldatedeb_input = document.getElementById('ldatedeb');
var ldatefin_input = document.getElementById('ldatefin');
var lselectduree_select = document.getElementById('lselectduree');
var ldatedeb = ldatedeb_input.value;
var lselectduree = lselectduree_select.value;
var ldatefin = null;
//alert ('0');
if(lselectduree && ldatedeb)
{
tab_date = ldatedeb.split('/');
//alert ('1');
if(tab_date.length == 3)
{
var jour = parseInt(tab_date[0], 10);
var mois = parseInt(tab_date[1], 10)-1;
var an = parseInt(tab_date[2], 10);
an = ((an < 100)? 2000+an: an);
var date_obj = new Date(an, mois, jour);
//conversion de la date en ms
var dateInMs = date_obj.getTime()
//ajout du nombre de semaines
if(parseInt(lselectduree,10) != 0)
{
dateInMs += parseInt(lselectduree, 10) * oneDay;
//maj de date_obj
date_obj.setTime(dateInMs)
jour = date_obj.getDate();
mois = date_obj.getMonth() + 1;
an = date_obj.getFullYear();
ldatefin = (jour>9? '': '0') + jour + '/' + (mois>9? '': '0') + mois + '/' + an;
ldatefin_input.value = ldatefin;
}
}
}
}
--------------------------------------------------------------------------
<input type="text" id="ldatedeb" size="12" maxlength="10" class="resableutxt9" onClick="view_microcal(true,ldatedeb,calend,-1,0);" onBlur="view_microcal(false,ldatedeb,calend,-1,0);" onKeyUp="this.style.color=testTypeDate(this.value)?'black':'red'" onselectstart="return false;" onChange="fill_input();" readOnly>
<div id="calend" style="visibility:hidden;position:absolute;border:2px black solid;background:#ffffff;"></div>
</span>
champs datedeb qui affiche un calendar sur le onClick
<select id = "lselectduree" name="lselectduree" class="resableutxt9" onChange="fill_input();">
champs de sélection de la durée avec du code asp derrière... marche très bien
<input type="text" id="ldatefin" size="12" maxlength="10" class="resableutxt9" style="cursor:pointer;" onMouseDown="return false;" onselectstart="return false;" readOnly>
champs ldatefin remplit par le biais de la première fonction
Voila le onChange du premier input ne fonctionne pas...
Si tu veux tester, va sur
http://www.guiltour.com/resa_dev_140507/sources/resa/modele.asp?lg=fr&resid=0&wid=guiltour&siteback=javascript:window.close(
En fait, si tu sélectionne l'un et après l'autre ça marche mais ce que je n'arrive pas à faire, c'est que si la durée est déjà sélectionnée et que je change de date, ça n'actualise pas le champ ldatefin, il attend de nouveau qu'on clic sur la durée pour se lancer...
Si c'est trop mal expliqué, dis moi ce que tu comprends pas ^^
Merci bien de t'intéresser à mon problème
Piervi