Bonjour,

Je bloque sur un problème des plus étranges depuis 2h, je me résouds à demander de l'aide

Essayons d'être clair : J'ai tout simplement un select qui ressemble à ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<select multiple id="blabla_left" onclick="__WebSelector_add('blabla')" onmouseover="clearTimeout(__WebSelector_timer);this.focus();" onmouseout="__WebSelector_showDiv('blabla', false);">
J'ai mis tous les evénements, car peut-être qu'un des autres parasite mais celui qui nous interesse est le onclick. Notez que je ne veux pas du onchange (car le onchange est déclenché par le déplacement du curseur dans la liste avec les flèches)

Note 1: le this.focus() peut surprendre mais il permet d'éviter les comportement énervants avec la roulette de la souris. L'enlever ne change rien au pbm.
Note 2: Le select est dans un div masqué par défaut (d'où la gestion des onmouseover et onmouseout)

Voici le début de la fonction qui récupère le onclick:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
function __WebSelector_add(strID) {
	var oList = document.getElementById(strID + '_left');
	var oOption = oList.options[oList.selectedIndex]; // Plante
[...]
C'est tout bête: Je récupère ma liste, puis le selectedIndex de la liste.

Ca fonctionne nickel sur FF, par contre le comportement est surréaliste sur IE6 (pas encore essayé sur IE7)
1- La première fois que je clique sur un élément de ma liste, j'ai un plantage IE sur la 2e instruction de la fonction. En gros selectedIndex vaut toujours -1 à ce moment donc ça plante.
2- A partir du 2e click ça fonctionne (le fait d'avoir "bleuté" un élément de la liste fait que ça passe)
3- Si je rajoute un alert(oList.selectedIndex) entre les deux lignes, CA FONCTIONNE!!!! C'est à dire que l'alert me renvoie -1 et non mon index mais ensuite il me récupère bien l'option et la bonne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
function __WebSelector_add(strID) {
	var oList = document.getElementById(strID + '_left');
	alert(oList.selectedIndex); // Renvoie -1
	var oOption = oList.options[oList.selectedIndex]; // Ne plante pas
[...]
4- Comme je suis un gros malin, j'ai tenté de mettre 2 alert(oList.selectedIndex) l'un à la suite de l'autre. Et bien le premier renvoie -1, et le second renvoie la bonne valeur. Wonderful.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
function __WebSelector_add(strID) {
	var oList = document.getElementById(strID + '_left');
	alert(oList.selectedIndex); // Renvoie -1
	alert(oList.selectedIndex); // Renvoie la bonne valeur
	var oOption = oList.options[oList.selectedIndex]; // Ne plante pas
[...]

5- Comme je suis vraiment un gros malin, j'en ai déduit que le fait d'appeler oList.selectedIndex une fois "débloquait" sa valeur. J'ai donc tenté de le faire avec un truc plus discrèt qu'un alert (mettre sa valeur dans une variable) mais par contre ça ne fonctionne pas. Je ne suis pas si malin (à moins que ça soit IE? )

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
function __WebSelector_add(strID) {
	var oList = document.getElementById(strID + '_left');
	var iSelectedIndex = oList.selectedIndex;
	var oOption = oList.options[oList.selectedIndex]; // Plante
[...]

Etonnant non, en tout cas?

Bref... comment m'en sortir?????