Liste déroulante liée

Résolu/Fermé
Signaler
Messages postés
29
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
5 juillet 2012
-
Messages postés
29
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
5 juillet 2012
-
Bonjour,
Dans un fichier php, j'ai 2 listes déroulantes, renseignées par une requête mysql, qui contiennent les mêmes données .
La première qui concerne le titulaire et la seconde qui concerne le suppléant.

Je voudrais que lorsque je choisis un titulaire dans la première liste, il n'apparaisse pas dans la seconde, la même personne ne pouvant être à la fois titulaire et suppléant.

Merci d'avance pour votre aide.

Gif50

8 réponses

Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
tu dois pouvoir faire ça en javascript

onChange sur la premiere liste va appeler une fonction JS qui va supprimer l'entree correspondante dans la deuxieme

vas voir sur G ou sur ce forum
Javascript supprimer une option de liste deroulante

mais fais gaffe car si l'utilisateur change son choix dans la liste une ça va en supprimer un a chaque fois

dans ce cas le mieux serait que ça mettre disabled dans l'option concernée, le nom apparaitra mais ne pourra pas être sélectionné
0
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
je crois que ma deuxième solution n'est pas possible, mais pour la première vas voir ce site:

http://fr.selfhtml.org/javascript/objets/options.htm#effacer_elements
0
Messages postés
29
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
5 juillet 2012

Bonjour Alain_42,

Tout d'abord merci pour ta réponse.
Elle m'a permis de trouver une solution pour supprimer dans la liste2 l'élément choisi dans la liste1.
Mais comme tu l'indiques si l'utilisateur change l'élément de la liste1, on supprime à nouveau un élément de la liste2 mais sans retrouver le tout premier élément choisi.
Il faudrait je pense d'abord recopier la liste1 dans la liste2 et ensuite supprimer le nouvel élément choisi de la liste1, par contre je ne sais pas comment faire ça.
Si quelqu'un a une idée elle est la bienvenue.

Cordialement,
Gif50
0
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
J'ai fais depuis une recherche un peu plus approfondie http://www.aliasdmc.fr/balise/zone_html_option.html il est possible de mettre disabled=true dans la balise option, donc de modifier ça par javascript

ça résoudrait ton pb car il suffit de parcourir toutes les <option> de la liste 2 et de mettre disabled=false pour tous sauf celle selectionnée liste1 que tu mettrait disabled=true
0
Messages postés
29
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
5 juillet 2012

Merci Alain pour ta réponse, mais la fonction "disabled" permet effectivement de ne plus pouvoir sélectionner l'élément, en revanche il n'est pas possible de le remettre "enabled" car "disabled = false" ne fonctionne pas.
Je suis entrain de tester une solution ajax qui utilise le système des listes déroulantes liées.

Cordialement,
Gif50
0
Messages postés
29
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
5 juillet 2012

J'ai trouvé la solution dont voici le code javascript :

function go(){
//Je récupère l'indice selectionné dans la liste1
var indice=document.form.liste1.selectedIndex;
//Je calcule le longueur de la liste1
var long=document.form.liste1.length;
//Je supprime l'attribut 'disabled' des tous les éléments de la liste2
for (i=0; i<long; i++) {
document.form.liste2.options[i].removeAttribute("disabled");
}
//Je 'disabled' l'element selectionné de la liste1 dans la liste2 pour ne pas pouvoir le selectionné
document.jeune.liste2.options[indice].disabled = true;
}

Merci à Alain_42 pour m'avoir mis sur la piste.

Cordialement,
Gif50
0
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
Bravo !

Cordialement

@lain
0
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
par contre attention tu as utilisé" long" comme nom de variable, apparemment c'est un mot réservé javascript
mais ça n'a pas l'air de gêner ?
0
Messages postés
29
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
5 juillet 2012

Merci Alain_42,
Je n'ai pas vu de problème avec le mot "long" mais pour eviter tout problème je l'ai remplacer par "nb".

Cordialement,
Gif50
0