Page 1 sur 1
valeur de <input text> en fonction d'un <select>
Posté : 04 avr. 2005, 10:12
par syrius qui s'invite
bonjour,
je travaille sur une application où se trouve un formulaire.
j'ai récupéré 2 tableaux de ma BDD : $type_log[$i] et $prix_log[$i].
A chaque type correspond un prix.
la liste des type_log se trouvent dans un menu déroulant, et je veux que suivant le type_log choisi, le prix correspondant apparaisse automatiquement dans un champs texte a côté.
j'ai fais ça, mais ça marche pas
voici mon code php :
Code : Tout sélectionner
<td><select name="type_log" onChange='choix2(this.form)'>
<?
$j=0;
while($j!=$nb_type_log){
?>
<option>
<? echo($type_log[$j]); ?>
</option>
<?
$j++;
}
?>
</select>
<?
$j=0;
while($j!=$nb_type_log){
?>
<input type='hidden' name='<? echo($j); ?>' value='<? echo($prix_log[$j]); ?>'>
<?
$j++;
}
?>
</td>
<td><input type='text' class='input' name='prix_log' size='20' value=''></td>
voici ma fonction javascript :
Code : Tout sélectionner
function choix2(form){
i = form.type_log.selectedIndex;
form.prix_log.value = form.i.value;
}
quelqu'un sait faire?
merci

Posté : 04 avr. 2005, 11:59
par thierry
essaie ça :
Code : Tout sélectionner
function choix2(form){
document.form.prix_log.value = document.form.type_log.value
}
Posté : 04 avr. 2005, 12:13
par Invité
euh.... si je fais ça il va me copier le type_log dans le champs texte

....
moi je veux qu'il m'affiche le prix_log[$i], sachant que la valeur de $i peut etre récupérée avec Seleted Index...
Posté : 04 avr. 2005, 12:29
par thierry
ok j'avais mal lu ton post.
dans ce cas là garde la fonction javascript que tu avais faite et rajoute document avant le form.
par contre si je me souvient bien l'index d'un select commence à partir de 0.
donc soit tu reseigne l'attribut value de tes options avec le prix (dans ce cas là la fonction que je t'ai filé fera l'affaire, et à part si tu en a vraiment besoin tu n'as plus à générer de champs hidden), soit tu bricole pour mettre ton index à niveau.
Posté : 04 avr. 2005, 13:54
par syrius qui s'invite
j'ai essayé ça :
Code : Tout sélectionner
function choix(form){
i = document.form.type_log.selectedIndex;
txt = document.form.prix["+i+"].value;
document.form.type_log.selectedIndex = 0;
document.form.prix_log.value=txt;
}
marche pô non plus

Posté : 04 avr. 2005, 14:09
par thierry
essaie ça :
<select name="type_log" onChange='choix2(this.form)'>
<?
$j=0;
while($j!=$nb_type_log){
echo('<option value="' .$prix_log[$j] . '" >');
echo($type_log[$j]);
echo('</option>');
$j++;
}
?>
</select>
et pour la fonction js prend celle que je t'ai posté.
sinon je ne vois pas très bien où tu as voulu en venir avec ta fonction, ni si un nom de balise peut être un chiffre.
Posté : 04 avr. 2005, 14:20
par syrius qui s'invite
je vais hurler!!!
j'ai fais ça :
Code : Tout sélectionner
function choix(form){
document.form.prix_log.value = document.form.type_log.value;
}
et ça :
Code : Tout sélectionner
<td><select name="type_log" onChange='choix(this.form)'>
<?
$j=0;
while($j!=$nb_type_log){
?>
<option value='<? echo($prix_log[$j]); ?>'><? echo($type_log[$j]); ?></option>
<?
$j++;
}
?>
</select>
</td>
<td><input type='text' name='prix_log' size='20'/></td>
celui qui me trouve ma faute a droit à.... à je sais pas quoi d'ailleurs.

Posté : 04 avr. 2005, 14:33
par thierry
chez moi quand j'utilise this.form ça ne marche pas.
par contre quand je met le nom de ma form ça marche
donc :
Code : Tout sélectionner
<form name="toto" method ...>
...onChange="choix();"...
function choix()
document.toto.prix_log.value...
Posté : 04 avr. 2005, 15:12
par syrius qui s'invite
mille merci !!!!!!!!!
ça marche enfin!!!!!
j'ai en effet enlevé le this.form et mis le nom de mon formulaire.
merci encore!
Posté : 05 avr. 2005, 17:15
par Invité
j'avais parlé trop vite!!!
ce bout de code fonctionne en effet, mais je ne peux plus récupérer la valeur de type_log (censée etre égale à type_log|$j]), puisqu'elle est désormais égale a prix_log[$j]...
il ne faut donc pas utiliser de <option value='quelquechose'>.
Si quelqu'un a une autre idée....
Posté : 05 avr. 2005, 18:14
par thierry
salut,
je te propose de créer un hidden où tu stockeras ton type_log (à mon avis on peut trouver mieux

).
donc :
et à rajouter dans le javascript :
Code : Tout sélectionner
i=document.form.type_log.options.selectedIndex;
document.form.type.value=document.form.type_log.options[i].text;
Posté : 06 avr. 2005, 10:24
par syrius contente
ok super ça marche bien cette fois ci.