我正在使用Ajax验证Zend表单并提出了这个:
$('#some-dialog-i-have form').live('submit', function(e) {
e.preventDefault();
MyClass.Form.Validate($(this), function() {
// I wish to submit the form from this callback function
$(this).trigger('submit');
});
});
MyClass.Form.Validate接受表单并执行XHR请求以检查表单是否有效。
我的问题是,如果表格有效,我希望继续提交表格,但如果不是,请停止表格。从此处理程序中触发提交显然会导致递归问题;什么是最好的解决方法?
Form: {
Validate: function(form, onSuccess) {
$.ajax({
type: 'POST',
dataType: 'json',
url: '/ajax/form/validate',
data: form.serialize() + '&f=' + form.data('id')
}).done(function(errorMessages) {
if(errorMessages.count > 0) {
// Snip (display errors)
return false;
}
// Callback
onSuccess();
});
}
}
可能是一个简单的解决方案,但我的头脑今天并不在正确的位置。
感谢。
答案 0 :(得分:1)
我想到的一件事就是有一个变量来表明该表单是否因Ajax检查而有效。
如果标志为false,则运行Ajax验证。一旦Ajax验证返回为有效,将标志设置为true,然后当触发提交处理程序时,它会看到该标志并绕过检查并直接提交表单。
请记住,在提交时仍应在服务器上验证表单,以防有人禁用JS或机器人尝试直接发布到服务器并跳过验证步骤。
希望有所帮助。