Problème javascript&html
Résolu/Fermé
piervi
Messages postés
104
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
11 septembre 2023
-
24 mai 2007 à 13:49
piervi Messages postés 104 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 11 septembre 2023 - 24 mai 2007 à 15:07
piervi Messages postés 104 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 11 septembre 2023 - 24 mai 2007 à 15:07
A voir également:
- Problème javascript&html
- Telecharger javascript - Télécharger - Langages
- Editeur html - Télécharger - HTML
- &Nbsp html ✓ - Forum Webmastering
- [HTML] - á et les autres - Forum HTML
- Espace en html - Astuces et Solutions
3 réponses
Rwick
Messages postés
59
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
25 septembre 2007
9
24 mai 2007 à 13:51
24 mai 2007 à 13:51
"SHOW US THE CODE"
piervi
Messages postés
104
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
11 septembre 2023
7
24 mai 2007 à 14:15
24 mai 2007 à 14:15
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
piervi
Messages postés
104
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
11 septembre 2023
7
24 mai 2007 à 15:07
24 mai 2007 à 15:07
Bon ben pour le nieme post ke j'ai mis, j'ai trouvé la solution au final ^^
Il suffit dans une function js de mettre :" input.onChange();"
Voilou ^^
Il suffit dans une function js de mettre :" input.onChange();"
Voilou ^^