Tiens au fait, c'est pas le fait qu'il y ai un [] dans le nom ???
C'est peut-être un caractère illégal...
Tiens au fait, c'est pas le fait qu'il y ai un [] dans le nom ???
C'est peut-être un caractère illégal...
si tu parles dec'est la syntaxe utilisée pour php. Sans les crochets, ca ne marche pas en php car il croit que c'est une variable simple au lieu d'un tableau. Apres si c'est ca le pb, et bah adieu ie!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part elements['article_liste_sujets[]']
Lol, y a peut-être moyen d'être moins radical... surtout qu'IE est le navigateur le plus utilisé du web...Envoyé par Choupinou
Et si tu essayais de voir si ca marchait pas mieux avec cette méthode la :
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.getElementsByName("xyz[]")[0].getElementsByTagName("option")
Non, les crochets, ça marche très bien, il faut simplement passer par elements, comme Choupinou l'a fait.Envoyé par Choupinou
Si tu fais un alert de
liste_sujets.length, il en dit quoi ie? (et FFx)?
711 pour les 2
de meme pour alert(liste_sujets.options.length)
Dans ce cas, c'est qu'IE ne prend pas en charge l'application de l'attribute display pour les options...
alors, tu dois faire ceci :
Pour cacher tout :
Pour afficher tout :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select.opt = document.createElement("div") select.opt.innerHTML=select.innerHTML select.innerHTML=""
Code : Sélectionner tout - Visualiser dans une fenêtre à part select.innerHTML=select.opt.innerHTML
ok merci mais la ca cache le select en entier c'est bien ca?
Non, ca ne fait que cacher toutes les options...Envoyé par Choupinou
ok. Ca devrait marcher pour tout cacher seulement dans mon code, j'ai d'autres fonctions qui ne cachent qu'une partie des options. Donc j'aurais le même problème pour les autres fonctions
Dans ce cas, je vais te rediger un petit codeEnvoyé par Choupinou
Envoyé par FremyCompany
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117 <html> <head> <title>Select Adapter</title> <script type="text/javascript"> makeSelect=function(s) { if (s.tagName.toLowerCase() != "select") { throw "ArgumentException : 's' isn't a valid Select"; } s.allOptions = new Array(); var all=s.getElementsByTagName("option"); for (var i=0; i<all.length; i++) { s.allOptions[i] = all[i].cloneNode(true); s.allOptions[i].display=true; s.allOptions[i].setAttribute("index", i) all[i].setAttribute("index", i) } s.allOptions.select=s; s.allOptions.add=function(text, value) { var index=this.length; var o=document.createElement("option"); o.display=true; o.value=value; o.setAttribute("index", index) o.appendChild(document.createTextNode(text)); this[index]=o; this.select.refresh(); return index; } s.allOptions.remove=function(index) { this[index]=null; this.select.refresh(); return true; } s.refresh=function() { /* Conserver la selection IE+FF */ /* Bug Connu : IE ne prend pas en charge la multi selection */ var all=this.getElementsByTagName("option"); for (var i=0; i<this.allOptions.length; i++) { this.allOptions[i].removeAttribute("selected"); this.allOptions[i].selected=false; } for (var i=0; i<all.length; i++) { var index=all[i].getAttribute("index"); var selected=all[i].selected; if (""+selected+""=="true") { this.allOptions[index].setAttribute("selected","selected"); } } /* Refresh, IE+FF */ this.innerHTML=""; var current=0; var selectedIndex=-1; for (var i=0; i<this.allOptions.length; i++) { var o = this.allOptions[i]; if (o && o.display) { var newO=o.cloneNode(true); if (document.all) { if(current && o.selected) { selectedIndex=current; current=false; } current++; } this.appendChild(newO); } } if (document.all && selectedIndex != -1) { this.selectedIndex=selectedIndex; } } s.hide=function(index,noRefresh) { var o = this.allOptions[index]; if (o) { o.display=false; if (!(noRefresh)) { this.refresh(); } return true; } else { return false; } } s.show=function(index,noRefresh) { var o = this.allOptions[index]; if (o) { o.display=true; if (!(noRefresh)) { this.refresh(); } return true; } else { return false; } } s.hideAll=function() { for (var i=0; i<this.allOptions.length; i++) { this.hide(i, true); } this.refresh() } s.showAll=function() { for (var i=0; i<this.allOptions.length; i++) { this.show(i, true); } this.refresh() } return s; } </script> </head> <body> <select> <option value="0">0</option> <option value="1">1</option> </select> <script> var s = makeSelect(document.getElementsByTagName("select")[0]); </script> <input type="button" value="Ajouter une option" onclick="s.allOptions.add(s.allOptions.length,s.allOptions.length)" /> </body> </html>
Ah mince, mon code marche pas sous IE...
joli code. Marche très bien sous firefox mais ce putain d'ie fais encore chier le peuple!! Il n'exécute pas ton code. Je vois un select avec rien dedans
Je sais pourquoi, et c'est un bug connu en plus... je suis déjà occupé de corrigerEnvoyé par Choupinou
peut-être que je pourrais garder toutes mes options dans un tableau puis si une option change d'état dans le tableau alors je l'ajoute (si display=true) au select ou la supprime (si display=false). Le seul pb c'est que ce sont des données classées. Il faudrait qu'elles gardent le même ordre dans le select. Tu penses que ce serait faisable?
Ca marche nickel!! Merci beaucoup!! Plus qu'à l'intégrer à mon code
11h58 :
14h51 :Code modifé (compatible IE)
Code modifié (La selection est consérvée (si possible))
Bug connu : IE ne prend pas en charge la sauvegarde d'une multi-selection
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager