Page 1 sur 1

requete sur on change dans liste deroulante

Posté : 03 mai 2006, 13:40
par bunk
Bonjour,

Je cherche à executer une requete apres changement d'etat d'une liste déroulante (on change) en fonction d'un ID

Ma fonction javascript :
function Diffusion(id) {
location.href="index.php?nvg=9&val=" + document.form_diffuse.diffuse.value + "&id=" + id;
}
Mon champ :
echo "<form name='form_diffuse' action='index.php?nvg=9' method='post'>";
							
							echo "<select name='diffuse' onChange='Diffusion(". $id_contact .")'>";
							echo "<option value='" . $diffuse . "' SELECTED >" . $diffuse . "</option>";
							
							if($diffuse == "OUI") {
								echo "<option value='NON'>NON</option>";
								} else {
								echo "<option value='OUI'>OUI</option>";
								}	
							
							echo "</select>";
Je rencontre une dificultés, la première la valeur de la liste déroulante n'est pas présente dans l'URL de redirection (undefined)

Pouvez vous m'aider ?
D'avance merci

Posté : 03 mai 2006, 13:48
par Cyrano
Proposition: envoie la valeur en second paramètre. Modifie ta fonction JavaScript comme ceci:
function Diffusion(id, valeur)
{
    var identifiant = valeur + id;
    location.href="index.php?nvg=9&id="+ identifiant;
}
Et dans ton formulaire :
<?php
//...
                            echo "<form name='form_diffuse' action='index.php?nvg=9' method='post'>";
                            echo "<select name='diffuse' onChange='Diffusion(". $id_contact .", this.value)'>";
                            echo "<option value='" . $diffuse . "' SELECTED >" . $diffuse . "</option>";
                            
                            if($diffuse == "OUI") {
                                echo "<option value='NON'>NON</option>";
                                } else {
                                echo "<option value='OUI'>OUI</option>";
                                }    
                            echo "</select>";
//...
?>

Posté : 03 mai 2006, 13:49
par Ryle
Pour récupérer la valeur sélectionnée d'une liste déroulante il faut procéder ainsi :

Code : Tout sélectionner

document.monFormulaire.monSelect.options[document.monFormulaire.monSelect.selectedIndex].value
Une autre solution plus simple consiste à passer cette valeur en paramètre de ta fonction dans le onChange (la syntaxe reste la même, elle est juste plus légère puisque l'on peut utiliser l'objet "this" pour spécifier le select) :

Code : Tout sélectionner

<select name='diffuse' onChange='Diffusion(". $id_contact .", this.options[this.selectedIndex].value);'>
Il te suffit alors de rajouter un deuxième argument à ta fonction Diffusion().

Posté : 03 mai 2006, 13:56
par bunk
merci Cyrano, je n'arivais pas a mettre une deuxième valeur dans mon select :?

Posté : 03 mai 2006, 14:04
par Cyrano
merci Cyrano, je n'arivais pas a mettre une deuxième valeur dans mon select :?
Est-ce que ça résoud le problème ?

Posté : 03 mai 2006, 14:08
par bunk
tout a fait !

meri encore