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 : 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();
}
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 : 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();
}
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...