2009-05-12 9 views
8

私はフォーム要素とポップアップウィンドウ(window.openで開く)を持つWebページを持っています。入力要素がJavaScriptによってポップアップウィンドウから変更されたときに "onChange"イベントを発生させます

両方ともjQueryが利用可能です。

ポップアップウィンドウには、オープナーウィンドウのフォーム要素を変更できるjavascriptがあります。それを行うことで完璧に動作します...

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

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

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

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

ヒント私は間違いなく、他のページ要素のアーキテクチャのためにonChangeイベントを発生させる必要があります。

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

答えて

10

多分あなたを傷つけているクロスウィンドウ...代わりにあなたが呼ぶオープナーの中で機能を作ってみてください。役立つかもしれません?開幕戦で

:ポップアップから

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

opener.changeMyElement(value); 
+0

ありがとうございます。それは完璧に働いた! – BlaM

+2

オープナー。$( '...').val(newval).change(); – Tracker1

2

この行は、動作するようになっている:

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

jQueryのdocumentationによると、この行が一致した各要素の変更イベントをトリガします。

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

+0

Y:

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

またはあなたの文脈で

私はできます。それは完全に機能します(通常は隠し要素でなければなりません)。しかし、セキュリティ上の理由から、ポップアップから「オープナー」でJavaScriptを実行することは禁じられていると思われます。イベントを発生させるとJavaScriptが実行されます。 – BlaM

0

また、行うことができます。

$(opener.document.formelement).fireEvent('onchange'); 
+1

これは実際にはIEでのみ有用であり、9より前のバージョンでのみ有用であることに注意してください:http://help.dottoro.com/ljvtddtm.php – RustyTheBoyRobot

関連する問題