8

フォーム要素とポップアップ ウィンドウ (window.open で開く) を含む Web ページがあります。

どちらも jQuery を利用できます。

ポップアップ ウィンドウには、オープナー ウィンドウのフォーム要素を変更できる JavaScript があります。それは...

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

ただし、そうすると onChange イベントは発生しません。ただし、それは他のいくつかのページ要素で必要になります。だから私は onChange イベントを自分で起動しようとしました

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

しかし、それは何もしません。

ヒントはありますか?他のページ要素のアーキテクチャにより、必ず onChange イベントを発生させる必要があります。

この質問はCall Javascript onchange event by programatically changing textbox valueに似ていますが、その質問から提案された解決策は私にはうまくいかないようです。多分それはポップアップのためです。

4

3 に答える 3

10

おそらく、あなたを傷つけているのはクロスウィンドウです...代わりに呼び出すオープナー内の関数を作成してみてください。役立つかもしれません?

オープナーで:

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

ポップアップから:

opener.changeMyElement(value);
于 2009-05-13T02:38:02.023 に答える
2

この行は機能するはずです:

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

jQueryのドキュメントによると、この行は一致した各要素の変更イベントをトリガーします。

うまくいかない場合は、コードのどこかに問題があります。フォーム要素を手動で変更して onchange イベントをトリガーできますか?

于 2009-05-12T23:11:10.150 に答える
0

次のこともできます。

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

またはあなたの文脈で:

$(opener.document.formelement).fireEvent('onchange');
于 2010-04-06T17:27:04.560 に答える