我试图使用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。
答案 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)