Select simples/multiples : bug IE6?

Select simples/multiples : bug IE6? - HTML/CSS - Programmation

Marsh Posté le 23-05-2006 à 16:53:55    

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. function PostSelect(formulaire)
  2. {
  3.     var cible = formulaire.elements["tab[]"];
  4.     // On compte le nombre d'item de la liste select
  5.     var nbCol = cible.length;
  6.     // on passe le Select en Multiple
  7.     cible.multiple = 'true';
  8.     // On lance une boucle pour selectionner tous les items
  9.     for (var a = 0; a < nbCol; a++)
  10.     {
  11.         cible.options[a].selected = 'selected';
  12.     }
  13.     // On soumet le formulaire
  14.    formulaire.submit();
  15. }


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 (le Alert au milieu du code), tout fonctionne parfaitement!!!
 
 

Code :
  1. function PostSelect(formulaire)
  2. {
  3.     var cible = formulaire.elements["tab[]"];
  4.     // On compte le nombre d'item de la liste select
  5.     var nbCol = cible.length;
  6.     // on passe le Select en Multiple
  7.     cible.multiple = 'true';
  8.  
  9.    alert ("hello world" );
  10.     // On lance une boucle pour selectionner tous les items
  11.     for (var a = 0; a < nbCol; a++)
  12.     {
  13.         cible.options[a].selected = 'selected';
  14.     }
  15.     // On soumet le formulaire
  16.    formulaire.submit();
  17. }


 
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...

Reply

Marsh Posté le 23-05-2006 à 16:53:55   

Reply

Marsh Posté le 17-10-2007 à 15:48:30    

Moi aussi j'ai le même problème ! help me !!!

Reply

Marsh Posté le 17-10-2007 à 16:43:43    

Mouais, bon, c'est un bug. En général lorsque tu modifies ta page via DOM, les navigateurs bufferisent les modifications jusqu'à ce que la fonction javascript soit terminée. Ça permet d'éviter que chaque micro changement ne se répercute sur la page (avec les perfs désastreuses qui vont avec).
 
Franchement, ça me parait tordu ton truc. Changer ton select single en select multiple implique un changement graphique, ce changement doit certainement être mis de coté, le temps que ta fonction se termine. Perso, j'utiliserais plutôt un champ hidden et encoderais ta liste là dedans (genre séparés par des ";" ).


Message édité par tpierron le 17-10-2007 à 16:45:09
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed