Höher „onChange“ -Ereignis, wenn Eingabeelement von JavaScript aus Popup-Fenster geändert
-
21-08-2019 - |
Frage
Ich habe eine Webseite mit einem Formular-Elemente und einem Popup-Fenster (geöffnet von window.open).
Beide haben jQuery zur Verfügung.
Die Popup-Fenster verfügen über ein Javascript, das das Formularelement im Opener Fenster ändern kann. Das funktioniert perfekt, indem Sie ...
$(opener.document.formelement).val(vals[0]);
Allerdings, indem Sie, dass das onChange Ereignis wird nicht ausgelöst. Das würde durch einige andere Seitenelemente erforderlich sein, though. Also versuchte ich mich das onChange Ereignis ausgelöst mit
$(opener.document.formelement).change();
Aber das macht nichts.
Für Hinweise? Ich muss auf jeden Fall haben, dass onChange Ereignis aufgrund der Architektur der anderen Seitenelementen gebrannt.
Diese Frage ist ähnlich wie Rufen Ändern Textbox Wert , aber die vorgeschlagenen Lösungen aus dieser Frage scheinen nicht für mich zu arbeiten. das ist wegen des Popup Vielleicht.
Lösung
Vielleicht ist es das Quer Fenster, das Sie verletzt ... Versuchen Sie eine Funktion innerhalb der Opener zu machen, die Sie stattdessen nennen. Könnte helfen?
Im Opener:
window.changeMyElement = function(value) {
$(formelement).val(value).change();
}
Von: Pop-up
opener.changeMyElement(value);
Andere Tipps
Diese Linie soll arbeiten:
$(opener.document.formelement).change();
Nach dem jQuery Dokumentation diese Linie des Änderungsereignis jeden verglichene Elements ausgelöst wird.
Wenn es nicht für Sie arbeitet, dann gibt es ein Problem in Ihrem Code irgendwo. Können Sie das onchange Ereignis ausgelöst wird, um mit der Hand in das Formularelement zu ändern?
Sie können auch tun:
window.opener.document.getElementById('controlname').fireEvent('onchange');
oder im Kontext:
$(opener.document.formelement).fireEvent('onchange');