Liste déroulante à partir checkbox javascript

[Fermé]
Signaler
Messages postés
170
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 octobre 2018
-
 rabi3006 -
Bonjour,

Est-il possible de faire apparaitre une liste déroulante à partir du clic sur une checkbox en javascript?

Merci

5 réponses

Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
852
Bien sur que ce fut une réponse constructive, la preuve tu t'y es mis :)
Et puis il faut arrêter de penser qu'on est là pour tout vous faire : comment veux-tu que je commence quelque chose si je ne sais pas dans quelle direction tu es allé (quel code tu as déjà fait)

Ce qui ne va pas c'est ta fonction javascript : mauvaise déclaration, le code n'est pas exactement bon.

Voilà ce qu'il faudrait faire :
<script>
function checkVisible() {
   // --- Check status of check box, if checked => display list
   if ( document.getElementById('chkutil').checked ){
     document.getElementById('utilisateur').style.visibility = "visible";
   }
   // --- Else hide list
   else {
     document.getElementById('utilisateur').style.visibility = "hidden";
   }
}
</script>


Ceci a insérer avant ton formulaire (c'est toujours mieux avant) :

<script>
function checkVisible() {
   // --- Check status of check box, if checked => display list
   if ( document.getElementById('chkutil').checked ){
     document.getElementById('utilisateur').style.visibility = "visible";
   }
   // --- Else hide list
   else {
     document.getElementById('utilisateur').style.visibility = "hidden";
   }
}
</script>

Utilisateur:<br>
<?php echo $data['nom_utilisateur'].' '.$data['prenom_utilisateur'].'   '?>
<label for ="chk1">
<input type="checkbox" name="chkutil" onchange="checkVisible();">Modifier
<?php
  echo '<select name="utilisateur">'."\n"; 
   
	$sql = "SELECT num_utilisateur, nom_utilisateur, prenom_utilisateur FROM utilisateurs order by nom_utilisateur"; 
	$result = odbc_exec ($odbc,$sql);
   
	while ($data = odbc_fetch_array($result)) 
	{ 
    echo '<option value="'.$data['num_utilisateur'].'"> '.$data['nom_utilisateur'].' '.$data['prenom_utilisateur'].''; 
	}
  echo '</select>'."\n"; 
?>

<script>
// --- Appel une premiere fois pour afficher / cacher la liste selon l etat de la check box
checkVisible();
</script>




Je n'ai pas vérifier le code de ton formulaire mais s'il est correct ça devrait fonctionner.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
852
Bonjour,

Oui, tout est possible. Pour cela il te suffit de mettre un évenement onclick sur ta checkbox, qui appellera une fonction javascript dans laquelle :
- si l'état de la checkbox est 'coché' => faire apparaitre la liste déroulante
- si l'état de la checkbox est 'décoché' => faire disparaitre la liste déroulante

Pour ce qui est de faire apparaitre / disparaitre une liste box, il faut pour cela que tu la mette des le départ dans ton formualire (là ou tu veux qu'elle apparaisse), et ensuite que tu joue sur la propriété javascript suivante :

objet.style.visibility = "visible";
objet.style.visibility = "hidden";

où objet est ta selectBox.

Voilà une piste, fais quelques trucs et si tu n'y arrive pas, montre ton code et pose tes questions.

Messages postés
170
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 octobre 2018
8
Merci,

C'est ce que j'avais compris, mais c'est vraiment la partie codage de fonction qui me manque.
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
852
Ben... c'est un peu le boulot d'un programmeur, comment savoir faire si l'on vous mâche toujours tout le travail, tu vois ce que je veux dire ;)
Messages postés
170
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 octobre 2018
8
Merci de cette réponse constructive...
Enfin bref...

Voici le peu de code que j'ai reussi à faire (biensur ça marche pas)
Utilisateur:<br>
<?php echo $data['nom_utilisateur'].' '.$data['prenom_utilisateur'].'   '?>
<label for ="chk1">
<input type="checkbox" name="chkutil" onchange="setVisible();">Modifier
<?php
  echo '<select name="utilisateur" objet.visibility = "hidden";>'."\n"; 
   
	$sql = "SELECT num_utilisateur, nom_utilisateur, prenom_utilisateur FROM utilisateurs order by nom_utilisateur"; 
	$result = odbc_exec ($odbc,$sql);
   
	while ($data = odbc_fetch_array($result)) 
	{ 
    echo '<option value="'.$data['num_utilisateur'].'"> '.$data['nom_utilisateur'].' '.$data['prenom_utilisateur'].''; 
	}
  echo '</select>'."\n"; 
?>


<script>
function setVisible()
valeur_select=document.getElementById('chkutil').value;
document.getElementById('utilisateur').objet.visibility = "visible">;
</script>
Messages postés
10
Date d'inscription
mercredi 3 octobre 2007
Statut
Membre
Dernière intervention
29 juin 2009

Bonjour
voila j'ai vu ce qui a été fait pour le traitement des check box et les listes.
mais au faite je voulais savoir comment faire ds le cas inverse ?? je m'explique.
au faite au chargement de ma page j'un select multiple qui se rempli a partir d'une table de ma BD.
apres je vx quand je selectionne un element ou plusieur, j'appui sur un bouton et là il me rajoute un ou plusieurs checkbox portant le nom de l'element selectionner et un label devant le check box.
alors si kk1 a une idée ca serai sympa de sa part.
Merci.
:
<script language="Javascript">

function LockUnlockElements() {
if (document.getElementById("nbre_rev1").checked) {
document.getElementById("rev1").style.visibility="visible";
}
else
document.getElementById("rev1").style.visibility="hidden";

}
</script>

<html>

<div>
<input id="nbre_rev1" type="checkbox" value="1rev" onClick="LockUnlockElements()" checked="checked" />1 rev

</div>

<select id="rev1" name="rev1"><option selected></option></select>

</form>
<html>