Bonjour à tous,
Je souhaite mettre en place deux fenêtres "Select", transférer des "options" de l'une à l'autre, puis submiter tout le contenu de la première fenêtre pour l'envoyer au serveur.
Pour une question d'ergonomie IHM, les deux champs Select sont en mode "multiple = false" afin de manipuler les éléments un à un.
Pour submiter le contenu du Select dans son ensemble, je passe donc "multiple = true" au moment du submit pour autoriser la multiple sélection, puis je sélectionne l'ensemble des options à l'aide d'une boucle avant de submiter.
Le code fonctionne parfaitement sous Firefox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 function PostSelect(formulaire) { var cible = formulaire.elements["tab[]"]; // On compte le nombre d'item de la liste select var nbCol = cible.length; // on passe le Select en Multiple cible.multiple = 'true'; // On lance une boucle pour selectionner tous les items for (var a = 0; a < nbCol; a++) { cible.options[a].selected = 'selected'; } // On soumet le formulaire formulaire.submit(); }
Sous IE 6, il fonctionne.... presque. En effet, il se produit un phénomène qui ressemblerait à un bug d'IE : seule la dernière option du Select est sélectionnée... et transmise
Là où ça devient étrange, c'est qu'en apportant la modification suivante (en grisé), tout fonctionne parfaitement!!!
J'ai alors pensé que IE avait besoin d'un délai pour prendre en compte le changement d'état. J'ai donc inséré à la place du Alert une boucle for comptant de 1 à 100 ou 1000, sans résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 function PostSelect(formulaire) { var cible = formulaire.elements["tab[]"]; // On compte le nombre d'item de la liste select var nbCol = cible.length; // on passe le Select en Multiple cible.multiple = 'true'; alert ("hello world"); // On lance une boucle pour selectionner tous les items for (var a = 0; a < nbCol; a++) { cible.options[a].selected = 'selected'; } // On soumet le formulaire formulaire.submit(); }
Bref, je ne sais pas comment résoudre ce problème.
Merci d'avance à ceux qui pourront m'aider...
Partager