Raise événement « onChange » lorsque l'élément d'entrée modifié par JavaScript de fenêtre pop-up
-
21-08-2019 - |
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.
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');