因为jquery对话框的方式,当使用“确认”对话框时,你必须立即返回false,如果用户选择“Ok”,则触发表单提交。
所以,我正在使用这段代码:
function validoForm()
{
//some code here...
if (datosTdcIncompletos==true)
{
var $dialogTDC= $('<div></div>')
.html("TDC information incomplete\n\rDo you want to continue?")
.dialog({
autoOpen: false,
modal:true,
title: 'Confirm',
buttons: {
Ok: function() {$( this ).dialog( "close" ); $('#bookForm').submit();},
Cancel: function() {$( this ).dialog( "close"); return false;}
}
});
$dialogTDC.dialog('open');
return false;
}
$('#bookForm').submit();
}
和
<script type="text/javascript">
$(document).ready(function() {
$('#submitBtn').click(function (){ $('#bookForm').submit();});
var options1 = {
target: '#bookForm',
url: 'http://localhost/include/processForm.php',
type:'post',
beforeSubmit:validoForm,
success: showResponse
};
$('#bookForm').ajaxForm(options1);
});
</script>
问题出现是因为Ok按钮功能(Ok: function() {$( this ).dialog( "close" ); $('#bookForm').submit();},
),因为这是再次提交表单而且我收到“太多递归”错误。
应该怎么做?
答案 0 :(得分:1)
您需要将整个验证和对话作为单个实体工作。因此,当单击提交按钮时,javascript验证将启动,对话将一次性显示。然后对话作为验证过程的最后一步。
因此,在验证方法结束时,您应该返回从对话框返回的值或返回true(假设对话框显示表单不完整时)。
这也意味着删除提交按钮上的点击事件,否则你只会在循环中四处走动。
答案 1 :(得分:1)
您的submitBtn点击处理程序应该只运行验证方法(并返回false以防止默认机制)。
然后你的验证方法只应在用户确认OK时调用submit。
您还需要删除最后一个$('#bookForm')。submit();在你的验证方法中,它会一直被调用。