如何在不刷新父窗口内容的情况下使用jQuery在父窗口中提交表单(Ajax提交)

时间:2012-11-05 11:37:45

标签: php javascript jquery jquery-ui

我试图使用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:Object [object Object]没有方法'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 个答案:

答案 0 :(得分:0)

这应该有效:

$(parent).find('#invoice_form').submit();

答案 1 :(得分:0)

如果您在弹出窗口中并且想要访问开始窗口,请使用window.opener

试试这个:

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

而不是:

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

另见this帖子。

<强> ------- ----- EDIT

不要忘记在您调用它的窗口中加载jQuery表单插件:

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

答案 2 :(得分:0)

试试这个..

$(parent).find('#invoice_form').submit();

答案 3 :(得分:-1)

只需使用父选择器:

$('#invoice_form',window.parent.document)