Raise événement « onChange » lorsque l'élément d'entrée modifié par JavaScript de fenêtre pop-up

StackOverflow https://stackoverflow.com/questions/855264

Question

J'ai une page Web avec un élément de formulaire et une nouvelle fenêtre (ouverte par window.open).

Les deux ont jQuery disponibles.

La fenêtre a un javascript qui peut changer l'élément de forme dans la fenêtre d'ouvre-porte. Cela fonctionne parfaitement en faisant ...

$(opener.document.formelement).val(vals[0]);

Toutefois, en faisant que l'événement onChange ne se déclenche pas. Ce serait nécessaire par d'autres éléments de la page, cependant. J'ai donc essayé de tirer l'événement onChange moi-même avec

$(opener.document.formelement).change();

Mais cela ne fait rien.

Les conseils? Je dois certainement avoir cet événement onChange tiré en raison de l'architecture d'autres éléments de la page.

Cette question est similaire à Appel Javascript onchange événement par programatically changer la valeur zone de texte, mais les solutions proposées à partir de cette question ne semble pas fonctionner pour moi. Peut-être est à cause de la fenêtre contextuelle.

Était-ce utile?

La solution

Peut-être sa contre-fenêtre qui vous fait du mal ... Essayez de faire une fonction à l'intérieur du premier match que vous appelez à la place. Pourrait aider?

En ouverture:

window.changeMyElement = function(value) {
  $(formelement).val(value).change();
}

De pop-up:

opener.changeMyElement(value);

Autres conseils

Cette ligne est censée fonctionner:

$(opener.document.formelement).change();

Selon les href="http://docs.jquery.com/Events/change" cette ligne déclenche l'événement de changement de chaque élément adapté.

Si cela ne fonctionne pas pour vous, alors il y a un problème dans votre code quelque part. Pouvez-vous déclencher l'événement onchange en changeant dans l'élément de formulaire à la main?

Vous pouvez également faire:

window.opener.document.getElementById('controlname').fireEvent('onchange');

Ou dans votre contexte:

$(opener.document.formelement).fireEvent('onchange');
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top