afficher partie d'un formulaire suivant une sélection

Eléphant du PHP | 83 Messages

23 janv. 2008, 17:05

bonjour
j'aimerais afficher des boutons radios suivant la sélection d'un menu déroulant
par exemple
<form action="#">
 <select name="select2"  >
    <option value="01" >essai1</option>
    <option value="02"   >essai2</option>
    <option value="03">essai3</option>
  </select>
  </form>
et que le bouton suivant apparrait seulement si essai2 est sélectionné
<input type="radio" name="name" value="name"   style="visibility: hidden " />
Si quelqu'un a une idée merci d'avance pour votre réponse

d0m
Mammouth du PHP | 1141 Messages

23 janv. 2008, 17:12

tu peux pour cela soit :

- recharger la page et si la valeur selectionnée de la liste est celle d'essai2 afficher le bouton radio

ou

- utiliser du javascript en mettant la visibilité du bouton radio à visible

Je pense que tu veux surement éviter de recharger la page donc tu prefereras surement te tourner vers le javascript.
Pour le javascript, il faut que tu ajoutes dans ta liste déroulante une action lorsqu'on change de selection :

Code : Tout sélectionner

<SELECT ... onchange="afficherRadio(this);">

Code : Tout sélectionner

function afficherRadio(liste){ //teste si la valeur selectionne de la liste est la bonne on change la visibilité du bouton radio }

Eléphant du PHP | 83 Messages

23 janv. 2008, 17:50

bonjour
voilà j'ai ça qui fonctionne mais le problème c que si j'ai plusieurs valeurs 1,2,3,4,5 ...
comment faire pour que le bouton radio n'apparaisse que pour la valeur 5 par exemple
Merci d'avance pour ta réponse
<script type="text/javascript">
function Visible(champs)
{
  var Obj = document.getElementById(champs);
  if (Obj.style.visibility == 'hidden')
    {Obj.style.visibility = 'visible';}
  else
    {Obj.style.visibility = 'hidden';}
}
</script>
</head>

<body>
<form action="#">
 <select name="select2"  onchange="Visible('champs1')" >
    <option value="01" selected="selected">essai1</option>
    <option value="02"      >essai2</option>
     </select>
  <input type="radio" name="sos" value="radiobutton"    id="champs1" style="visibility: hidden " />
<tr>
</tr>
</form>

d0m
Mammouth du PHP | 1141 Messages

24 janv. 2008, 09:22

Pour l'instant tu affiches les boutons si ils étaient cachés et vice versa.
Toi tu veux afficher si la selection est la valeur 5, cacher si la selection est différent de 5.
Il suffit donc de juste changer ta condition.

Il faut donc tout d'abord récupérer la valeur de l'option qui est sélectionné dans la liste déroulante .
Pour cela, il y a le code là :

Code : Tout sélectionner

var liste = nom_formulaire.nom_liste; //ou var liste = document.getElementById['id_liste']; //puis var valeur = liste.options[liste.selectedIndex].value;
il suffit ensuite de mettre la visibilité à visible suivant les cas :
Par exemple dans ton cas :

Code : Tout sélectionner

if(valeur="5") Obj.style.visibility = 'visible'; else Obj.style.visibility = 'hidden';
Après c'est juste une question de test de la valeur, tu peux mettre des switch/case, etc.