我尝试使用 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();
处发生的错误是
Error:TypeError: Object [object Object] has no method '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,其显示属性设置为隐藏。
最佳答案
如果您处于弹出窗口中并且想要访问打开的窗口,请使用window.opener
.
试试这个:
window.opener.$('#invoice_form').ajaxSubmit();
而不是这个:
parent.$('#invoice_form').ajaxSubmit();
另请参阅this发布。
-----编辑-----
不要忘记在您调用它的窗口中加载 jQuery 表单插件:
<script src="http://malsup.github.com/jquery.form.js"></script>
关于php - 如何使用jQuery在父窗口中提交表单而不刷新父窗口的内容(Ajax提交),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13231353/