Listes déroulantes en cascade
Résolu/Fermé
isa--
Messages postés
77
Date d'inscription
lundi 16 septembre 2013
Statut
Membre
Dernière intervention
11 mars 2020
-
Modifié le 13 nov. 2017 à 22:06
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 - 13 nov. 2017 à 22:45
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 - 13 nov. 2017 à 22:45
A voir également:
- Listes déroulantes en cascade
- Liste déroulante en cascade - Guide
- Créer des listes déroulantes excel - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
- Cascade windows 11 - Guide
- Comment mettre sa liste d'amis en privé sur facebook - Guide
2 réponses
jordane45
Messages postés
38288
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 novembre 2024
4 703
Modifié le 13 nov. 2017 à 22:32
Modifié le 13 nov. 2017 à 22:32
Bonjour,
De façon plus propre .. voici ton code revu et corrigé.
(je me suis également permis d'jaouter le fait de masquer la liste si elle est vide...)
Au passage ... prend l'habitude de placer ton JS à la fin de ta page... (avant le </body>).
de cette façon ton HTML est chargé même en cas de souci dans ton js. (c'est également préférable pour les robots lorsque tu veux faire indexer tes pages dans un moteur de recherche).
De toutes façons, placer son js dans le head.... ça ne se fait plus.....
NB² : On évite de travailler avec les "name" des élements...
En JS on utilise les ID ou les CLASS.
La syntaxe form.nomelement. .... c'était comme ça il y a 15 ans.......
Cordialement,
Jordane
De façon plus propre .. voici ton code revu et corrigé.
(je me suis également permis d'jaouter le fait de masquer la liste si elle est vide...)
<!DOCTYPE html> <html lang="fr" <head> <meta charset="utf-8"> <title>CHOIX LISTE EN CASACADE</title> <style> .selectWrapper{ display:inline-block; border:1px solid #cccccc; } .selectBox{ width:120px; border:0px; outline:none; } .form-group{ display:block; vertical-align:middle; margin:5px; } .form-group>span { display: inline-block; width:120px !important; } .form-vertical{ display: block; } </style> </head> <body> <form name="formu" class="form-vertical"> <div class="form-group" id="div_listeerreur"> <span>Choisir une erreur</span> <div class="selectWrapper"> <select name="listeerreur" id="listeerreur" onChange='filltheselect(this.id, this.value)' class="selectBox"> </select> </div> </div> <div class="form-group" id="div_listenom"> <span>Choisir un nom</span> <div class="selectWrapper"> <select name="listenom" id="listenom" class="selectBox"> </select> </div> </div> <div class="form-group" id="div_listemotif"> <span>Choisir un motif</span> <div class="selectWrapper"> <select name="listemotif" id="listemotif" class="selectBox"> </select> </div> </div> </form> </body> <script type="text/javascript"> var erreur = []; var nom=[]; var motif=[]; erreur[0] = ["p0", "Bureau"]; erreur[1] = ["p1", "Client"]; erreur[2] = ["p2", "Commercial"]; // erreur Bureau nom["p0"] = []; nom["p0"][0] = ["p0v0", "Aymeric"]; nom["p0"][1] = ["p0v1", "Carine"]; nom["p0"][2] = ["p0v2", "Cindy"]; nom["p0"][3] = ["p0v3", "Magali"]; nom["p0"][4] = ["p0v4", "Sophie"]; //erreur Commercial nom["p2"]=[]; nom["p2"][0] = ["p2v0", "DUPONT"]; nom["p2"][1] = ["p2v1", "MARNIER"]; nom["p2"][2] = ["p2v2", "CATARD"]; nom["p2"][3] = ["p2v3", "LAURON"]; nom["p2"][4] = ["p2v4", "PAGEARD"]; nom["p2"][5] = ["p2v5", "PUNAUT"]; nom["p2"][6] = ["p2v6", "VARNIER"]; nom["p2"][7] = ["p2v7", "VERNEDAL"]; // erreur bureau motif["p0"] = []; motif["p0"][0] = ["p0m0", "Prise de cde"]; motif["p0"][1] = ["p0m1", "Conseil"]; motif["p0"][2] = ["p0m2", "Incompréhension"]; motif["p0"][3] = ["p0m3", "Erreur Ref"]; motif["p0"][4] = ["p0m4", "Saisie de cde"]; motif["p0"][5] = ["p0m5", "A justifier"]; // erreur client motif["p1"] = []; motif["p1"][0] = ["p1m0", "Erreur ref client"]; motif["p1"][1] = ["p1m1", "Annulation cde"]; motif["p1"][2] = ["p1m2", "Manque précision"]; motif["p1"][3] = ["p1m3", "Erreur quantité"]; motif["p1"][4] = ["p1m4", "Problème de prix"]; // erreur commercial motif["p2"] = []; motif["p2"][0] = ["p1m0", "Prise de commande"]; motif["p2"][1] = ["p1m1", "Conseil technique"]; //-------------------------------------------------// // Fonction pour remplir les listes //-------------------------------------------------// function init_list(listId,arrayValues){ var liste = document.getElementById(listId); arrayValues.forEach(function(element) { var option = document.createElement("option"); option.value = element[0]; option.text = element[1]; liste.add(option); }); } //-------------------------------------------------// // On rempli les listes en fonction du choix //-------------------------------------------------// function filltheselect(listeId, choix){ console.log(listeId); switch (listeId) { case "listeerreur": console.log(choix); raz("listenom"); raz("listemotif"); //Si la variable nom a une clé qui existe par rapport au choix if(typeof(nom[choix]) != "undefined" && nom[choix]!=null){ init_list('listenom',nom[choix]); document.getElementById('div_listenom').style.display = 'block'; }else{ document.getElementById('div_listenom').style.display = 'none'; } //Si la variable motif a une clé qui existe par rapport au choix if(typeof(motif[choix]) != "undefined" && motif[choix]!=null){ init_list('listemotif',motif[choix]); document.getElementById('div_listemotif').style.display = 'block'; }else{ document.getElementById('div_listemotif').style.display = 'none'; } break; } } function raz(listeId){ var liste = document.getElementById(listeId); liste.innerHTML = ""; } //-------------------------------------------------// //initialisation des listes //-------------------------------------------------// init_list('listeerreur',erreur); init_list('listenom',nom["p0"]); init_list('listemotif',motif["p0"]); </script> </body> </html>
Au passage ... prend l'habitude de placer ton JS à la fin de ta page... (avant le </body>).
de cette façon ton HTML est chargé même en cas de souci dans ton js. (c'est également préférable pour les robots lorsque tu veux faire indexer tes pages dans un moteur de recherche).
De toutes façons, placer son js dans le head.... ça ne se fait plus.....
NB² : On évite de travailler avec les "name" des élements...
En JS on utilise les ID ou les CLASS.
La syntaxe form.nomelement. .... c'était comme ça il y a 15 ans.......
Cordialement,
Jordane
isa--
Messages postés
77
Date d'inscription
lundi 16 septembre 2013
Statut
Membre
Dernière intervention
11 mars 2020
1
13 nov. 2017 à 22:45
13 nov. 2017 à 22:45
Nickel.
Merci beaucoup
Bonne soirée
Merci beaucoup
Bonne soirée
13 nov. 2017 à 22:43
En effet, c'est exact.
Entretemps je m'en étais rendu compte.
Encore merci et bonne soirée