Select simples/multiples : Bug IE?
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.
Code:
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();
} |
Le code fonctionne parfaitement sous Firefox.
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!!!
Code:
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();
} |
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.
Bref, je ne sais pas comment r�soudre ce probl�me.
Merci d'avance � ceux qui pourront m'aider...