Page 1 sur 1

modif d'un élément d'un formulaire dla page mère dun popup

Posté : 20 mai 2005, 15:59
par xfouayeman
je sui sdans une fonction appelé par un onchange sur une liste déroulante à l'intérieur d'un pop up. je veux ajouter une option dans un liste déroulante dans un formulaire de la page mère.
formulaire de la page mère: bonDeCommandeForm
liste déroulante:selectType_de_cartouche

Le code:

var o=new Option('cartouche choisi:');
window.opener.document.bonDeCommandeForm.selectType_de_cartouche.options[window.opener.document.bonDeCommandeForm.selectType_de_cartouche.options.length]=o;

sous Mozilla forefox ça marche, pas sous IE.
qq1 a une solution?

Posté : 20 mai 2005, 17:12
par naholyr
Il me semble qu'IE ne définit pas tout seul window.opener.
Il faut définir la fenêtre mère au moment de l'ouverture de la fenêtre fille:

Code : Tout sélectionner

w = window.open(...); w.opener = window

le pire c kil le fait!

Posté : 20 mai 2005, 17:25
par xfouayeman
si si juste avant ce truc qui marche pas je fais ça:
window.opener.document.bonDeCommandeForm.selectCartouche.value=cartouche

et ça le pire c ke a marche, dans mon champ de text, il me cale ce que je ve, j'arrive jusqu'à caler une liste sur une option particulière, mais rajouter l'option il veut pas, et sous firefox, ça marche!

ptetre l'attribut .lenght ne marche pas ou est-il protégé sous IE;
c pas un objet indéfini kil me sort comme erreur, c'est levage d'exception. jpense que c'est un problème d'autorisation, mais je sais pas comment on fait pour contourner.
tu vois?

Posté : 20 mai 2005, 17:31
par zeus
Il me semble qu'IE ne définit pas tout seul window.opener.
Il faut définir la fenêtre mère au moment de l'ouverture de la fenêtre fille:

Code : Tout sélectionner

w = window.open(...); w.opener = window
Je suis pas d'accord Naholyr, IE gère tout seul l'attribut opener

Posté : 20 mai 2005, 23:09
par naholyr
Bah moi j'ai dit ça je sais plus trop, je sais juste qu'il vaut mieux définir w.opener=window pour être sûr. C'est peut-être IE, netscape, Opera, Amaya j'en sais rien :)

Pour en revenir au sujet, elle est comment ta liste ? Tu veux ajouter dynamiquement un élément dans un select c'est ça ?

Posté : 20 mai 2005, 23:26
par rami
Au lieu de faire o= new Option("truc"), essaie de faire ca:

Code : Tout sélectionner

var element = document.createElement("truc");

Posté : 23 mai 2005, 11:00
par xfouayeman
IE gère bien le window.opener car comme je l'ai indiqué j'arrive déjà à changer le contenue dans d'un champ de texte de la fenêtre mère, j'arrive meêm à positionner une liste déroulante sur l'index désiré.
le seule problème c qu'il ne veut pas me laisser rajouter un élément dans une liste déroulante, comme si ct vérouillé.
J'aimerai essayé ave la technique où on fait create eleement, mais je comprend pas son utilisation. je cré un élément du document, mais j'en fais quoi ensuite, comment je l'ajoute aux options de ma liste déroulante?
j'ai essayé malistedéroulante.createElement, mais ça gère pas cet objet ne gère pas la propriété.
encore un peu d'aide?

Posté : 23 mai 2005, 11:31
par xfouayeman
<code>
function createOption(f,e,newValue,newText)
{
var objSelect=window.opener.document.forms[f].elements[e];
var objOption = window.opener.document.createElement("option");
objOption.text = newText
objOption.value = newValue

if(window.opener.document.all && !window.opener.opera) objSelect.add(objOption);

else objSelect.add(objOption, null);
}
</code>
voilà ça c cool

C cool mais...

Posté : 04 juin 2005, 22:29
par ANKOU22
Salut à tous,
Effectivement cette fonction marche pour ajouter un élément à la liste...

mais chose étrange et curieuse je n'arrive pas mettre cette fonction dans une boucle ou mettre une boucle dans cette fonction.

Une idée ?


ANKOU94

Oups

Posté : 05 juin 2005, 00:44
par ANKOU94
J ai parlé un peu vite ce code fonctionne parfaitement mem dans une boucle