Pb ie : ajouter un <option> à un <select> à partir d'une popup

cs_yosh Messages postés 20 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 30 octobre 2007 - 4 avril 2006 à 11:39
cs_yosh Messages postés 20 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 30 octobre 2007 - 4 avril 2006 à 16:37
Bon c assez compliqué mais je vai essayer d'être le plu clair possible



J'ai une page dans laquel j'utilise la technologie AJAX couplé à du PHP pour initialiser des listes (<select>)



Au chargement de la page j'ai une liste visible puis selon les choix de
l'utilisateur j'affiche d'autre listes que j'initialise à partir de ma
bdd...grâce à AJAX et javascript (au passage c'est un truc de ouf AJAX).



En gros pour ajouter une option j'utilise:

document.forms.mon_formulaire.mon_element.options[document.forms.mon_formulaire.mon_element.options.length]=
new Option(val2,val1);



La ya aucun problème, les données sont bien ajoutées...le hic c'est
quand j'ouvre une popup à partir de cet page et que je veux ajouter un
element à une liste du document parent.



Pour cela je fais:

window.opener.document.mon_formulaire.mon_element.options[window.opener.document.mon_formulaire.mon_element.options.length]=
new Option(val2,val1);



Ca marche niquel sous Mozilla, mais pas sous Internet Explorer!

Je vois vraiment pas ou est le problème!Si quelqu'un à une idée!



Merci de votre attention.



YOSH

11 réponses

cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
4 avril 2006 à 12:07
Bonjour

Déjà, j'aurais mis
window.opener.document.forms.mon_formulaire.mon_element.options[window.opener.document.forms.mon_formulaire.mon_element.options.length]=
new Option(val2,val1);

ensuite, j'aurais plutot fait :
opener.getElementById("mon_element").options[ etc ...

Attention à la distinction entre l'attribut name et l'attribut id
(je crois que IE est un peu plus permissif à ce niveau)

Cordialement
Roro webDev
0
cs_yosh Messages postés 20 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 30 octobre 2007
4 avril 2006 à 12:26
En fait j'ai déjà utiliser la pluspart des possibilités:

window.opener.document.forms.mon_formulaire.mon_element

window.opener.document.getElementById("mon_element")



Le truc c'est que ca marche sous Mozilla!!!



Autre précision:j'initialise le contenu d'un div à partir de cette popup avec innerHTML et ya pas de prob!!!



Concraitement mon code est le suivant:



//affiche une donnée dans un div du parent = > fonctionne bien

window.opener.document.getElementById('lib_type_decoupe').innerHTML=lib_type_decoupe;



//vide la liste du parent à initialiser => fonctionne bien

window.opener.document.getElementById('num_type_decoupe').innerHTML= "";



//ne fonctionne pas sous IE

window.opener.document .getElementById('num_type_decoupe').options[window.opener.document.getElementById('num_type_decoupe').options.length] = new Option(lib_type_decoupe,num_type_decoupe);



C'est à ni rien comprendre!!!



Merci de ton aide Roro










Yosh
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 avril 2006 à 12:31
Bonjour,
ça vient de l'utilisation de new Option... que je n'ai plus en tête
enfin je crois, car :

var t=window.opener.document.mon_formulaire.mon_element;
t.length++;
t[t.length-1].text='aaa';
t[t.length-1].value='bbb';

fonctionne avec IE et FF.

Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>
0
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
4 avril 2006 à 12:43
Bonjour

Bul n'a peut-etre pas tort. Voici un bout de script (copié collé sans autres fioritures) que j'utilise dans les mêmes conditions (ajax, ...) et qui fonctionne.

var opt=new Option(respXML.getElementsByTagName("tarif")[i].getAttribute("lib"), respXML.getElementsByTagName("tarif")[i].getAttribute("garant"));
document.getElementById("anGar3").options[document.getElementById("anGar3").options.length]=opt;

(ici, respXML, c'est la réponse xml du serveur.)

Cordialement
Roro webDev
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
4 avril 2006 à 12:47
Bonjour

Au fait, tu as vraiment besoin d'une popup pour faire ça ? c'est casse-G... les popups, de plus en plus de monde les refuse (souvent sans le savoir, d'ailleurs)

Cordialement
Roro webDev
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 avril 2006 à 12:55
>>les popups, de plus en plus de monde les refuse
et là roro06 a totalement raison.
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>
0
cs_yosh Messages postés 20 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 30 octobre 2007
4 avril 2006 à 15:58
Déjà merci à vous de m'aider, c sympa



Pour l'utilisation des popup, je sais que c vraiment pas top...j'aurai
pu utiliser un div mais bon...la ca m'évite de recharger ma page(d'ou
l'utilisation de AJAX).



Sinon j'ai résolu mon problème...



En fait tous ce que je voulais c stocké un identifiant...et du coup
j'ai changé ma liste par une zone de texte caché et la, hop plus de
problème...



Encore merci à vous...



Si vous avez des suggestions pour la popup, je suis tout ouï...(c pas bien français ça je crois )




Yosh
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 avril 2006 à 16:08
>>je suis toute ouie ( je pense, comme oreille, encore que toute ? qui a un dictionnaire ? )
si ajax ==> pas de rechargement de page, c'est l'avantage justement.
sinon, un div/span caché que l'on montre/cache quand nécessaire
remplace souvent avantageusement.
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~
on ne dit pas "le dictionnaire Larousse", mais "pouvez-vous
me passer le dictionnaire, mademoiselle, s'il vous plait".<FO>
</FO>
</S< body>
0
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
4 avril 2006 à 16:09
Bonjour

"je suis toute ouïe", je crois au contraire que c'est bien français.
C'est cool si tu as réussi à résoudre ton problème .
Penche-toi bien sur AJAX : Il permet justement des communications client-serveur, sans avoir à recharger la page (c'est d'ailleurs son principal intérêt), sans popup, sans div caché ...

Cordialement
Roro webDev
0
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
4 avril 2006 à 16:14
Bonjour

Ah ! Bul et moi nous sommes croisés (pour dire la même chose en plus )

Cordialement
Roro webDev
0
cs_yosh Messages postés 20 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 30 octobre 2007
4 avril 2006 à 16:37
Ouais, je vais suivre vos conseils et utiliser un div caché...facile à faire en plus!!!



Vous vous êtes croisé pour dire la même chose...c pas grave mieux vaut
avoir plusieurs avis et en l'occurence c'est les mêmes avis(d'ailleur
je suis de votre avis aussi)



Oulala ca fait beaucoup d'avis tous ça



Encore Merci (c'est qu'une impression ou je me répète là)



PS: vous êtes des bons!!!
Yosh
0
Rejoignez-nous