fonction ADD pour ajouter des options dans un select

Eléphant du PHP | 441 Messages

20 déc. 2005, 18:01

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 !!
Modifié en dernier par starkeus le 21 déc. 2005, 10:24, modifié 1 fois.
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

Mammouth du PHP | 1311 Messages

21 déc. 2005, 00:21

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;

Eléphant du PHP | 441 Messages

21 déc. 2005, 10:23

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.
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

Mammouth du PHP | 1311 Messages

21 déc. 2005, 10:29

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

Eléphant du PHP | 441 Messages

21 déc. 2005, 11:31

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.
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

Mammouth du PHP | 1311 Messages

21 déc. 2005, 11:57

je ne connais pas trop js et encore moins les popup
mais tu peut essayer d'utiliser les fonctions Dom pour ajouter tes options

Eléphant du PHP | 441 Messages

21 déc. 2005, 12:06

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.
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes