3

我正在尝试使用 jQuery 从子 iframe 提交包含在父窗口中的表单,但运气不佳。

在子窗口中,我具有以下验证功能:

<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='';

我有一个名为 process 的隐藏 iframe,它的 display 属性设置为 hidden。

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 回答