INPUT要素は、ポップアップウィンドウからのJavaScriptによって変更されたとき「のonChange」イベントを発生させます
-
21-08-2019 - |
質問
私は(window.openで開かれた)フォーム要素とポップアップウィンドウでWebページを持っています。
両方のjQueryを用意してます。
ポップアップウィンドウがオープナーウィンドウ内のフォーム要素を変更することができますJavaScriptを持っています。それは実行して完璧に動作...
$(opener.document.formelement).val(vals[0]);
しかしonChangeイベントが発生しませんことを行うことによって。それは、しかし、いくつかの他のページ要素によって必要とされるであろう。だから私は、
で自分自身をonChangeイベントを発射しようとしました$(opener.document.formelement).change();
しかし、それは何もしません。
任意のヒント?私は間違いなくonChangeイベントは、他のページ要素のアーキテクチャに起因する解雇することを持っている必要があります。
この質問はhref="https://stackoverflow.com/questions/735462/call-javascript-onchange-event-by-programatically-changing-textbox-value">はプログラム的によってイベントのonchange Javascriptを呼び出しを変更しますが、その質問から提案の解決策は、私のために働くしていないようです。たぶんそれが原因ポップアップのです。
解決
おそらく、そのクロスウィンドウ...あなたが代わりに呼び出すオープナーの内側に機能を作ってみましょう。役立つかもしれない?
オープナーでます:
window.changeMyElement = function(value) {
$(formelement).val(value).change();
}
ポップアップから:
opener.changeMyElement(value);
他のヒント
この行は、動作するようになっている。
$(opener.document.formelement).change();
このラインをjQueryのドキュメントは、各一致要素の変更イベントをトリガーします。
それはあなたのために働いていない場合は、どこかにあなたのコードに問題があります。あなたが手でフォーム要素に変更することでのonchangeイベントをトリガすることはできますか?
また、行うことができます:
window.opener.document.getElementById('controlname').fireEvent('onchange');
またはあなたのコンテキストでます:
$(opener.document.formelement).fireEvent('onchange');