sous ie, comment faire pour cacher une option dans un select. Sous firefox, ça marche mais pas sous ie...
Version imprimable
sous ie, comment faire pour cacher une option dans un select. Sous firefox, ça marche mais pas sous ie...
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 function insertOptionBefore(champReference,num,valeur,text) { var elOptNew = document.createElement('option'); elOptNew.text = text; elOptNew.value = valeur; var elOptOld = champReference.options[0]; try { champReference.add(elOptNew, elOptOld); } catch(ex) { champReference.add(elOptNew,0); } } function removeOption(champReference,index) { champReference.remove(index); }
Bien mais sache qu'IE n'accepte pas bien les []...
Idée :
__________________Code:document.getElementsByName("TOUT_CE_QUE_TU_VEUX[]")
EDIT : Dsl, je n'avais pas vu la 2e page.... :oops:
Ce que je dis n'a peut-être plus d'interet...
je sais qu'il ne les accepte pas trop mais apparemment la ca marche et avec php, pas trop le choix. Si getElementsByName marche bien, je changerais alors. pour l'instant, je touche plus ^^.Citation:
Bien mais sache qu'IE n'accepte pas bien les []...
euh la ton code permet d'ajouter et de supprimer des éléments dans le select. Mon select est deja rempli. Tout ce qu'il faut c'est cacher certaines options a certains moment et les faire réapparaitre. Mais il ne faut surtout pas que j'en supprimeCitation:
function insertOptionBefore(champReference,num,valeur,text)
{
var elOptNew = document.createElement('option');
elOptNew.text = text;
elOptNew.value = valeur;
var elOptOld = champReference.options[0];
try {
champReference.add(elOptNew, elOptOld); }
catch(ex) {
champReference.add(elOptNew,0);
}
}
function removeOption(champReference,index)
{
champReference.remove(index);
}
Pour faire disparaitre une option temporairement, faire comme avec un controle : utiliser style.display !
oui du style :
et la liste passée en parametre est la liste des options. Ca marche sous firefox mais pas sous ie.Code:
1
2
3
4
5
6
7
8 function cacher_tout(liste) { for(var i=0 ; i<liste.length ; i++) { liste[i].style.display = "none"; } }
J'ai également essayé de passer le select mais meme comportement
[EDIT] :
en fait ie met bien la valeur de style.display à none cependant il n'a pas l'air de l'interpréter correctement ce c--!!
( dans la famille des logiciels les plus pourris et les plus buggés, je veux le fils : ie!! merci ie pour le temps que tu nous fait perdre!!!)
??Code:
1
2
3
4
5
6
7
8 function cacher_tout(liste) { for(var i=0 ; i<liste.length ; i++) { liste[i].style.display = "none"; } } cacher_tout(select.document.getElementsByTagName("option"))
pb c'est que là ca va me cacher toutes les options de tous mes select non?
exact !
Voici un code sans doute plus adapté :
Code:
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 function cacher(select, cond) { var liste=select.getElementsByTagName("option") for(var i=0 ; i<liste.length ; i++) { var ok=null; try {eval("ok="+cond);} catch (ex) {} if (ok==true && typeof(ok)=="boolean") { liste[i].style.display = "none"; } else if (ok==false && typeof(ok)=="boolean") { liste[i].style.display = "none"; } else if (ok==null) { // Il y a eu une erreur : ne rien faire } else { // La condition renvoie un autre type d'objet // Par mesure de précaution, on arrête tout throw "La valeur de renvoi doit être un boolean ou null (ne rien faire)"; } } } // Cacher selon condition cacher(document.getElementById("select"),"liste[i].getAttribute('value')=='0'"); // Cacher tout cacher(document.getElementById("select"),true);
ok merci pour le bout de code, j'essaierais ça demain.
en fait, je viens de relire vite fait ton code. Ca revient à faire (en utilisant mon code)
Code:
1
2
3
4
5
6
7
8
9 function cacher_tout(liste) { for(var i=0 ; i<liste.length ; i++) { liste[i].style.display = "none"; } } cacher_tout(select.getElementsByTagName("option"))
up
Tu peux reprendre le problème au début? J'avoue qu'entre ton post original et ce dernier, je ne vois pas le rapport...... 8O Y'a pas un seul option dans ton truc original, c'est normal que ça ne fasse rien, non?Citation:
Envoyé par Choupinou
Tu peux résumer le problème et ce que tu cherches à faire? (c'est toujours le même problème qu'initiallement?)
Oui c'est toujours le même problème. En fait j'ai une fonction javascript qui cache les options d'un select (ça marche sous firefox). Le pb c'est que ça marche pas sous ie.
le code javascript qui devrait cacher ou montrer les options du select :
exemple d'appel :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 function montrer_tout(liste) { for(var i=0 ; i<liste.length ; i++) { liste[i].style.display = "block"; } } function cacher_tout(liste) { for(var i=0 ; i<liste.length ; i++) { liste[i].style.display = "none"; } }
Code:
1
2
3
4 var liste_sujets = document.forms['formulaire_articles'].elements['article_liste_sujets[]']; cacher_tout(liste_sujets.options);
Exemple d'appel :
Code:cacher_tout(liste_sujets.getElementsByTagName("option"));
liste_sujets est une liste d'élements, donc elle n'a pas de champs options.....Citation:
Envoyé par Choupinou
liste_sujets est un select et a bien des options (vérifié avec firebug sous firefox). Apres peut-être que c'est la cause qu pb sous ie
j'ai essayé même pb : marche sous firefox mais pas sous ieCitation:
Envoyé par FremyCompany
Oui, mais non... :)Citation:
Envoyé par Choupinou
liste_sujets est un array avec un objet, que firefox te présente comme l'objet.
EssayeCode:liste_sujets[0].options
j'ai essayé. toujours pareil... Mais c'est vrai que normalement ça devrait être un tableau avec un seul élément qui est un select. Bizarre que ça marche comme ça sous firefox et que ça ne marche toujours pas sous ie