Contenu d'une zone de list avec javascript
confiance150
Messages postés
12
Statut
Membre
-
Alain_42 Messages postés 5413 Statut Membre -
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,
Je souhaite avoir 2 listes de sélection contenant les même item (éléments) avec la spécificité que lorsque un élément de la liste 1 a été choisi qu'elle ne puisse plus être choisi dans la liste 2 en affichant une alerte à l'utilisateur de ne plus faire ce choix.
J'ai besoin d'aide car je n'ai que quelques bribes de connaissances en javascript/jquery pour le
faire.
Un lien, un script je suis preneur.
Merci
Je souhaite avoir 2 listes de sélection contenant les même item (éléments) avec la spécificité que lorsque un élément de la liste 1 a été choisi qu'elle ne puisse plus être choisi dans la liste 2 en affichant une alerte à l'utilisateur de ne plus faire ce choix.
J'ai besoin d'aide car je n'ai que quelques bribes de connaissances en javascript/jquery pour le
faire.
Un lien, un script je suis preneur.
Merci
A voir également:
- Contenu d'une zone de list avec javascript
- Alternative zone telechargement - Accueil - Outils
- List disk - Guide
- Créer une liste déroulante excel - Guide
- Directory list & print - Télécharger - Divers Utilitaires
- Word a trouvé du contenu illisible - Guide
6 réponses
voilà un petit script exemple
<html>
<script type="text/javascript">
function generation_liste2(){
//objet liste1
var liste1 = document.getElementById('liste1');
//objet liste2
var liste2 = document.getElementById('liste2');
//recup de la valeur selectionnée dans liste 1
var selection_liste1 = liste1.value;
if(selection_liste1 != -1){
//reup du texte de l'option selectionnée dans liste 1
var texte_select_liste1 = liste1.options[liste1.selectedIndex].text;
//message d'alerte
alert("Vous ne pouvez plus choisir "+texte_select_liste1);
//recup nbr elements dans la liste1
var nb_elem = liste1.options.length;
//boucle pour parcourir tous les elemnts de la liste 1 et generer la liste 2 a l'identique sauf la valeur selectionnée
//on commence par vider eventuellement la liste2
var nb_element_liste2 = liste2.options.length;
for(a=0;a<nb_element_liste2;a++){
liste2.options[liste2.length-1]=null;
}
for(i=0;i<nb_elem;i++){
//lecture valeur de la ligne d'option
var valeur_option = liste1.options[i].value;
//lecture du texte de la ligne d'option (qui peut etre differente de la value, comme dans cet exemple)
var texte_option = liste1.options[i].text;
//generation de la deuxieme liste sauf pour valeur selectionnée dans la liste 1 et la ligne -- choisissez --
if(valeur_option != selection_liste1 ){
var ligne = new Option(texte_option,valeur_option,false,false);
liste2.options[liste2.length]=ligne;
}
}
}else{
return false;
}
}
</script>
<body>
<form name="form1" method="post" action="">
<select name="liste1" id="liste1" onchange="generation_liste2();">
<option value="-1">-- choisissez --</option>
<option value="a">Lettre A</option>
<option value="b">Lettre B</option>
<option value="c">Lettre C</option>
<option value="d">Lettre D</option>
</select>
<select name="liste2" id="liste2">
<option value="-1">-- choisissez --</option>
</select>
</form>
</body>
</html>
Bonsoir,
Merci à Alain 42, j'ai testé le code et il fonctionne bien. Sauf qu'à présent j'ai voulu appliquée la fonction pour 5 zones de liste: liste1, liste2, Liste3, liste4, liste5.
Comment faire donc pour l'appliquer pour que la fonction soit accéssible aux cinq zones de listes.
Merci.
Merci à Alain 42, j'ai testé le code et il fonctionne bien. Sauf qu'à présent j'ai voulu appliquée la fonction pour 5 zones de liste: liste1, liste2, Liste3, liste4, liste5.
Comment faire donc pour l'appliquer pour que la fonction soit accéssible aux cinq zones de listes.
Merci.
voilà:
<html>
<script type="text/javascript">
function generation_liste_suivante(liste_n,liste_n_plus1){
//objet liste n
var liste_n = document.getElementById(liste_n);
//objet liste n+1
var liste_n_plus1 = document.getElementById(liste_n_plus1);
//recup de la valeur selectionnée dans liste n
var selection_liste_n = liste_n.value;
if(selection_liste_n != -1){
//reup du texte de l'option selectionnée dans liste 1
var texte_select_liste_n = liste_n.options[liste_n.selectedIndex].text;
//message d'alerte
alert("Vous ne pouvez plus choisir "+texte_select_liste_n);
//recup nbr elements dans la liste_n
var nb_elem = liste_n.options.length;
//boucle pour parcourir tous les elemnts de la liste 1 et generer la liste 2 a l'identique sauf la valeur selectionnée
//on commence par vider eventuellement la liste_n_plus1
var nb_element_liste_n_plus1 = liste_n_plus1.options.length;
for(a=0;a<nb_element_liste_n_plus1;a++){
liste_n_plus1.options[liste_n_plus1.length-1]=null;
}
for(i=0;i<nb_elem;i++){
//lecture valeur de la ligne d'option
var valeur_option = liste_n.options[i].value;
//lecture du texte de la ligne d'option (qui peut etre differente de la value, comme dans cet exemple)
var texte_option = liste_n.options[i].text;
//generation de la deuxieme liste sauf pour valeur selectionnée dans la liste n et la ligne -- choisissez --
if(valeur_option != selection_liste_n ){
var ligne = new Option(texte_option,valeur_option,false,false);
liste_n_plus1.options[liste_n_plus1.length]=ligne;
}
}
}else{
return false;
}
}
</script>
<body>
<form name="form1" method="post" action="">
<select name="liste1" id="liste1" onchange="generation_liste_suivante('liste1','liste2');">
<option value="-1">-- choisissez --</option>
<option value="a">Lettre A</option>
<option value="b">Lettre B</option>
<option value="c">Lettre C</option>
<option value="d">Lettre D</option>
<option value="e">Lettre E</option>
<option value="f">Lettre F</option>
</select>
<select name="liste2" id="liste2" onchange="generation_liste_suivante('liste2','liste3');">
<option value="-1">-- choisissez --</option>
</select>
<select name="liste2" id="liste3" onchange="generation_liste_suivante('liste3','liste4');">
<option value="-1">-- choisissez --</option>
</select>
<select name="liste2" id="liste4" onchange="generation_liste_suivante('liste4','liste5');">
<option value="-1">-- choisissez --</option>
</select>
<select name="liste2" id="liste5">
<option value="-1">-- choisissez --</option>
</select>
</form>
</body>
</html>
ok, on peut aussi améliorer encore en masquant les listes suivantes et faire apparaitre la n+1 seulement aprsè un choix dans la n, par action sur le style display none /block
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question