Page 1 sur 1

fonction ADD pour ajouter des options dans un select

Posté : 20 déc. 2005, 18:01
par starkeus
bonjour à tous!!
voilà j'ai un petit soucis:
J'ai une fenetre principale qui appelle une pop up dans laquelle se trouve une liste (pas au sens select) de liens qui permet d'alimenter la balise Select contenue dans la fenetre parent.
Je suis obligé d'utiliser 2 méthodes pour ajouter une option à ma select:
La première (ne fonctionne que sous FF) utilise la fonction add tout simplement en créant mon option par le constructeur Option().
La seconde (ne fonctionne que sous IE) crée mon option avec createElement('OPTION')...
Ces cas arrivent seulement quand je passe via une pop up.
Mais quand je le fais dans la même fenetre...IE supporte la méthode new Option...
quelqu'un pourrait m'expliquer et m'aider?? :roll:

Code : Tout sélectionner

function addOptionFromPopUp(selectId,txt,val) { //alert('selectId:'+selectId+' txt:'+txt+' val:'+val); if (controleExistenceChampFromPopUp (selectId,val)) alert('Ce champ est déjà dans la liste'); else { try{//POUR FF var objOption = new Option(txt,val); opener.$(selectId).options.add(objOption); } catch(ex) {//POUR IE var objOptionIE = opener.document.createElement("OPTION"); var select=opener.document.getElementById(selectId); select.options.add(objOptionIE); objOptionIE.innerText = txt; objOptionIE.value = val; } } }
Merci d'avance !!

Posté : 21 déc. 2005, 00:21
par jeff
ceci fonctionne tres bien chez moi
var src=document.getElementById(source);
	var dest=document.getElementById(destination);
	var indexS=src.options.selectedIndex;
	var indexD=dest.options.length;
	if(indexS<0) return;
	var valeur=src.options[indexS].text;
	src.options[indexS]=null;
	a = new Option(valeur);
	dest.options[indexD]=a;

Posté : 21 déc. 2005, 10:23
par starkeus
Merci de ta réponse mais cela ne fonctionne pas.
je te donne un exemple complet avec la pop up:
la page mère (mere.html) ...qui contient la balise select que je souhaite alimenter via une pop up.
<html>
<head></head>
<body>
<select id="select1">
</select>
<input type="button" value="pop up" onclick="javascript: window.open('fille.html');"/>
</body>
</html>
la page "fille" (fille.html) qui contient un bouton permettant d'ajouter une option dans la liste de la page mère:
<html>
<head>
<script type="text/javascript">
function addOptionFromPopUp(selectId,txt,val)
{

    var dest=opener.document.getElementById(selectId);
    var indexD=dest.options.length;
    if(indexD<0) return;
    var a =  new Option(txt,val);
    dest.options[indexD]=a;
}
</script>
</head>
<body>
<input type="button" value="ajouter" onClick="javascript: addOptionFromPopUp('select1','option','1');"/>
</body>
</html>
si tu essayes sous FF, cela marche. Mais sous IE cela me génère une exception et il n'y a que le code donnée dans mon premier post qui fonctionne car la méthode propre à IE ne fonctionne pas alors sous FF.

Posté : 21 déc. 2005, 10:29
par jeff
chez moi mon code fonctionne tres bien sous ie6 et FF
y a un truc que je pige pas a tu detreminer ton erreur
le passage de la popup a ta page ou l'inverse
ou seulement l'ajout d'une option

moi je n'aime pas les popup ca complique pour rien
je fais juste apparaitre un div en pposition absolue c'est tout auusi efficace

Posté : 21 déc. 2005, 11:31
par starkeus
chez moi mon code fonctionne tres bien sous ie6 et FF
y a un truc que je pige pas a tu detreminer ton erreur
le passage de la popup a ta page ou l'inverse
ou seulement l'ajout d'une option
L'erreur intervient à l'ajout. Essaye mon exemple tu verras que sous IE cela ne fonctionne pas. Ton exemple ne passe pas par une pop up.
moi je n'aime pas les popup ca complique pour rien
je fais juste apparaitre un div en pposition absolue c'est tout auusi efficace
je n'ai pas le choix les spec sont comme ça :wink: et en plus je vais utiliser la pop up sur plusieurs écrans.

Posté : 21 déc. 2005, 11:57
par jeff
je ne connais pas trop js et encore moins les popup
mais tu peut essayer d'utiliser les fonctions Dom pour ajouter tes options

Posté : 21 déc. 2005, 12:06
par starkeus
je ne connais pas trop js et encore moins les popup
mais tu peut essayer d'utiliser les fonctions Dom pour ajouter tes options
C'est ce que je fais...add() c'est une fonction du DOM mais d'après mes essais, il semble que cela soit la création de la balise Option qui soit différente entre FF et IE.
Merci quand meme de t'interesser à mon problème.