3

親ウィンドウに含まれるフォームを子iframeからjQueryを使用して送信しようとしていますが、運が悪かったです。

子ウィンドウには、次の検証関数があります。

<script type="text/javascript" src="templates/js/jquery.js"></script>
<script type="text/javascript" src="templates/js/jquery.validate.js"></script>
<script>
    $(document).ready(function(){
        $("#form_invoice_item").validate({
            submitHandler: function (form) {

                // Check if main invoice already saved
                if ($('#invoice_id').val() == "") {

                    // Change target to processing iframe
                    try {
                        parent.$('#invoice_form').ajaxSubmit();
                    } catch(e) { //debug
                        alert ("Error:" + e);
                    }

                } else {
                    alert ("Saving invoice " + $('#invoice_id').val() + ' items');                         }

                //form.submit(); //debug
            }
        });              
    });
</script>
<form method="post" id="form_invoice_item" name="form_invoice_item" action="index.php" target="invoice_items">

で発生するエラーparent.$('#invoice_form').ajaxSubmit();

エラー:TypeError:オブジェクト[オブジェクトオブジェクト]にはメソッド'ajaxSubmit'がありません

プレーンなJavascriptである次のスニペットを使用する場合、問題はありません(明らかに、これはjQueryではありませんが、作業は完了します)。jQueryでこれを行うにはどうすればよいですか?

parent.document.getElementById('invoice_form').target='process';
parent.document.getElementById('invoice_form').submit();
parent.document.getElementById('invoice_form').target='';

表示プロパティがhiddenに設定されているprocessという非表示のiframeがあります。

4

4 に答える 4

0

親セレクターを使用するだけです。

$('#invoice_form',window.parent.document)
于 2012-11-05T11:39:33.500 に答える
0

これは機能するはずです:

$(parent).find('#invoice_form').submit();
于 2012-11-05T11:40:11.797 に答える
0

ポップアップが表示されていて、開いているウィンドウにアクセスする場合は、を使用しますwindow.opener

これを試して:

window.opener.$('#invoice_form').ajaxSubmit();

これの代わりに:

parent.$('#invoice_form').ajaxSubmit();

この投稿も参照してください。

- - - -編集 - - -

jQueryフォームプラグインを呼び出すウィンドウにロードすることを忘れないでください。

<script src="http://malsup.github.com/jquery.form.js"></script>

于 2012-11-05T11:40:21.743 に答える
0

これを試して..

$(parent).find('#invoice_form').submit();
于 2012-11-05T11:41:06.930 に答える