valeur de <input text> en fonction d'un <select>

syrius qui s'invite
Invité n'ayant pas de compte PHPfrance

04 avr. 2005, 10:12

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
:oops:

Eléphant du PHP | 287 Messages

04 avr. 2005, 11:59

essaie ça :

Code : Tout sélectionner

function choix2(form){ document.form.prix_log.value = document.form.type_log.value }

Invité
Invité n'ayant pas de compte PHPfrance

04 avr. 2005, 12:13

euh.... si je fais ça il va me copier le type_log dans le champs texte :roll: ....

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...

Eléphant du PHP | 287 Messages

04 avr. 2005, 12:29

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.

syrius qui s'invite
Invité n'ayant pas de compte PHPfrance

04 avr. 2005, 13:54

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 :cry:

Eléphant du PHP | 287 Messages

04 avr. 2005, 14:09

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.

syrius qui s'invite
Invité n'ayant pas de compte PHPfrance

04 avr. 2005, 14:20

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. :lol:

Eléphant du PHP | 287 Messages

04 avr. 2005, 14:33

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...

syrius qui s'invite
Invité n'ayant pas de compte PHPfrance

04 avr. 2005, 15:12

mille merci !!!!!!!!!

ça marche enfin!!!!!

j'ai en effet enlevé le this.form et mis le nom de mon formulaire.

merci encore!

Invité
Invité n'ayant pas de compte PHPfrance

05 avr. 2005, 17:15

:cry: :cry:

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'>. :roll:

Si quelqu'un a une autre idée....

Eléphant du PHP | 287 Messages

05 avr. 2005, 18:14

salut,

je te propose de créer un hidden où tu stockeras ton type_log (à mon avis on peut trouver mieux :) ).

donc :

Code : Tout sélectionner

<input type="hidden" name="type">
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;

syrius contente
Invité n'ayant pas de compte PHPfrance

06 avr. 2005, 10:24

ok super ça marche bien cette fois ci.