Manipuler les listes "select" de mon formulaire
Résolu/Fermé
JC_8280
Messages postés
78
Date d'inscription
jeudi 19 mars 2020
Statut
Membre
Dernière intervention
7 février 2021
-
26 avril 2020 à 17:32
JC_8280 Messages postés 78 Date d'inscription jeudi 19 mars 2020 Statut Membre Dernière intervention 7 février 2021 - 30 avril 2020 à 20:40
JC_8280 Messages postés 78 Date d'inscription jeudi 19 mars 2020 Statut Membre Dernière intervention 7 février 2021 - 30 avril 2020 à 20:40
A voir également:
- Manipuler les listes "select" de mon formulaire
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Formulaire remboursement frais de résiliation free pdf ✓ - Forum Freebox
- Liste déroulante de choix excel - Guide
- Formulaire de contact le bon coin introuvable - Forum Réseaux sociaux
5 réponses
Salut,
JQuery est une bibliothèque JavaScript(un fichier écrit en JavaScript de fonctions) donc il s’intègre à une page de la même manière que n'importe quel fichier JavaScript.
Votre question suivante me semble plutôt concerner la façon dont vous faites les choses.
N'est ce pas ce que vous cherchez à faire modifier les éléments depuis le début?
Je serais vous(sans savoir exactement vos besoins exacts) je ne chercherais pas à modifier des éléments existants hypothétiques mais plutôt de les afficher quand on en a besoin.
Exemple de script:
Bien sûr tout n'est pas complet mais c'est un piste pour obtenir un meilleur code: plus simple à écrire et utiliser/réutiliser.
Dans cet exemple il faudra par exemple supprimer les anciens select au changement, ça peut être facilement pallié en attribuant un container vide pour chaque menu sous forme de liste déroulante et en 'écrasant' l'ancienne via innerHTML par exemple(ou en utilisant removeElement).
JQuery est une bibliothèque JavaScript(un fichier écrit en JavaScript de fonctions) donc il s’intègre à une page de la même manière que n'importe quel fichier JavaScript.
Votre question suivante me semble plutôt concerner la façon dont vous faites les choses.
N'est ce pas ce que vous cherchez à faire modifier les éléments depuis le début?
Je serais vous(sans savoir exactement vos besoins exacts) je ne chercherais pas à modifier des éléments existants hypothétiques mais plutôt de les afficher quand on en a besoin.
Exemple de script:
<div id='selection'> <SELECT name='choixA' id='choix1'> <option value='a'>a</option> <option value='b'>b</option> <!-- etc--> </select> </div>
let listeItemsA=['A1','A2','A3']; let listeItemsB=['B1','B2','B3']; function creationSelect(name,id,itemValues,itemsList){ let sel=document.createElement('select'); sel.setAttribute('name',name); sel.setAttribute('id',id); /* une boucle pour ajouter tout les choix OPTION à partir des 2 listes*/ for(let i=0;i<listItems.length;i++){ let opt=document.createElement('option'); opt.setAttribute('value',itemValues[i]); opt.innerHtml=itemsList[i]; sel.appendChild(opt);//-- ajoute chaque option au select } return sel; } /* j'utilise createElement car ça permet de manipuler directement des éléments HTML(balises) en tant que tel mais on peut très bien écrire la même chose avec du texte HTML sous forme de chaîne de caractères: let selecteur='<select name='+name+' >; selecteur+='<option value... ... et à la fin selecteur+='</select>'; Cela revient pratiquement au même sauf qu'une des façons de faire utilise une chaîne de caractère l'autre la programmation objet, les 2 méthodes peuvent avoir des avantages/inconvénients. */ document.getElementByid('choix1').addEventListener('change',function(){ if(document.getElementById('choix1').name==="a"){/** il y a clairement plus élégant comme façon de faire*/ let ajout=creationSelect('selectA','ItemA',listeItemsA,listeItemsA); document.getElementById('selection').appenChild(ajout); } /* faire de même pour les autres choix B, C etc...on peut aussi faire mieux en associant chaque "liste d'items" dans un objet JSON et sa valeur(ou avec l'objet Map)*/ });
Bien sûr tout n'est pas complet mais c'est un piste pour obtenir un meilleur code: plus simple à écrire et utiliser/réutiliser.
Dans cet exemple il faudra par exemple supprimer les anciens select au changement, ça peut être facilement pallié en attribuant un container vide pour chaque menu sous forme de liste déroulante et en 'écrasant' l'ancienne via innerHTML par exemple(ou en utilisant removeElement).
lugdanum
Messages postés
116
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
4 novembre 2024
41
27 avril 2020 à 19:00
27 avril 2020 à 19:00
Hello
Regarde du côté de ce script (il te faut jQuery...):
http://jsfiddle.net/YPsqQ/
ou encore celui-ci https://jsfiddle.net/pramod4g/9htsLjw4/
Cela peut peut être te donner une piste?
@+
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ma réponse t'a un peu aidé ? Si oui, un petit merci... Merci.
Regarde du côté de ce script (il te faut jQuery...):
http://jsfiddle.net/YPsqQ/
ou encore celui-ci https://jsfiddle.net/pramod4g/9htsLjw4/
Cela peut peut être te donner une piste?
@+
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ma réponse t'a un peu aidé ? Si oui, un petit merci... Merci.
JC_8280
Messages postés
78
Date d'inscription
jeudi 19 mars 2020
Statut
Membre
Dernière intervention
7 février 2021
27 avril 2020 à 23:25
27 avril 2020 à 23:25
Merci,
par contre je suis un grand débutant, c'est mon premier projet.
Je n'ai pas encore regardé comment on intègre le JQuery dans un projet.
J'ai prévu de le faire quand je fini ce projet.
Cette semaine j'espère.
Peux tu me dire, le JQuery se met dans le JS?
Cordialement.
JC
par contre je suis un grand débutant, c'est mon premier projet.
Je n'ai pas encore regardé comment on intègre le JQuery dans un projet.
J'ai prévu de le faire quand je fini ce projet.
Cette semaine j'espère.
Peux tu me dire, le JQuery se met dans le JS?
Cordialement.
JC
JC_8280
Messages postés
78
Date d'inscription
jeudi 19 mars 2020
Statut
Membre
Dernière intervention
7 février 2021
27 avril 2020 à 23:56
27 avril 2020 à 23:56
Bonsoir Lugdanum,
Je me demande si je laisse un seul élément "select", et modifie ses éléments avec le JS, est ce que cela va marcher mieux?
Bonne soirée.
JC
Je me demande si je laisse un seul élément "select", et modifie ses éléments avec le JS, est ce que cela va marcher mieux?
Bonne soirée.
JC
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
JC_8280
Messages postés
78
Date d'inscription
jeudi 19 mars 2020
Statut
Membre
Dernière intervention
7 février 2021
30 avril 2020 à 20:40
30 avril 2020 à 20:40
Bonsoir,
Au final, j'ai donc fait comme ça , sans JQuery.
J'essayerai le JQuery pour mon second projet.
Au final, j'ai donc fait comme ça , sans JQuery.
J'essayerai le JQuery pour mon second projet.
<!-- ****** CHOIX FAMILLE ****** --> <div class='classChoixFamille'> <label id='idLblCFamille' For="idSlctCFamille">FAMILLE OUTIL</label> <select id="idSlctCFamille" name = "familleOutil" autofocus required> <option value="">--CHOISIR UNE OPTION--</option> <option value="FRAISE">FRAISE</option> <option value="FORET">FORET</option> <option value="TARAUD">TARAUD</option> </select> </div> <!-- ****** CHOIX SOUS FAMILLE ****** --> <div id= 'idChoix_S_Famille_' class='classChoix_S_Famille'> <label class='classLblC_S_Famille' For="idSlctC_S_Famille_">SOUS FAMILLE</label> <select id="idSlctC_S_Famille_" class="classSlct_S_Famille" name="SousFamille"> <option value="">--CHOISIR UNE FAMILLE--</option> </select> </div>
// CONTROLE DU CHOIX SOUS FAMILLE // Merci à Narwaoui du Forum Comment ça marche. let listeItemsA=['2 TAILLES','TORIQUE','A FILETER','3 TAILLES','A CHANFREINER']; let listeItemsB=['STANDARD','ETAGE','A POINTER','SPECIAL']; let listeItemsC=['COUPANT','DEFORMATION']; function creationSelect(name,id,itemValues,itemsList){ let sel=document.createElement("select"); sel.setAttribute('name',name); sel.setAttribute('id',id); sel.setAttribute('class',"classSlct_S_Famille"); sel.setAttribute("required",""); for(let i=0;i<itemsList.length;i++){ let opt=document.createElement('option'); opt.setAttribute('value',itemValues[i]); //alert(itemsList[i]); let textOption = document.createTextNode(itemsList[i]); //opt.innerHtml=itemsList[i]; opt.appendChild(textOption); sel.appendChild(opt); } return sel; } let w = document.getElementById('idSlctCFamille'); w.addEventListener('change',function(){ let choixFamille = document.getElementById('idSlctCFamille'); let choix_S_Famille = document.getElementById("idChoix_S_Famille_").querySelector('select'); //alert(choixFamille.value); if(choixFamille.value=="FRAISE"){ let ajout=creationSelect('SousFamille','idSlctC_S_Famille',listeItemsA,listeItemsA); document.getElementById("idChoix_S_Famille_").replaceChild(ajout,choix_S_Famille); }else if (choixFamille.value=="FORET"){ let ajout=creationSelect('SousFamille','idSlctC_S_Famille',listeItemsB,listeItemsB); document.getElementById("idChoix_S_Famille_").replaceChild(ajout,choix_S_Famille); }else if (choixFamille.value=="TARAUD"){ let ajout=creationSelect('SousFamille','idSlctC_S_Famille',listeItemsC,listeItemsC); document.getElementById("idChoix_S_Famille_").replaceChild(ajout,choix_S_Famille); }else { alert( "REVOIE TON CODE JC: CHOIX SOUS FAMILLE" )} }); }