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:
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)
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);">
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:
C'est tout bête: Je récupère ma liste, puis le selectedIndex de la liste.
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 [...]
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
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 function __WebSelector_add(strID) { var oList = document.getElementById(strID + '_left'); alert(oList.selectedIndex); // Renvoie -1 var oOption = oList.options[oList.selectedIndex]; // Ne plante pas [...]
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?????![]()
Partager