由于我想进行ajax表单验证,因此提交表单时我的代码为:
$('form').submit(function(e){
$('.default').each(function(){
var self = this;
$.post(
'/cakephp/Packages/validate_form',
{field:$(this).attr('id'),value:$(this).val()
},
//$(this).serialize(),
//$(this).serializeArray(),
function(error){
//alert(error);
handleNameValidation(error,self)
}
);
function handleNameValidation(error,el){
var $parent = $(el).parent();
if(error.length>0){
if($('span.error-message',$parent).length==0){
$parent.append('<span class="error-message">'+ error + '</span>');
}
}
else{
$parent.removeClass('error-message');
$('span.error-message',$parent).fadeOut();
}
}
});
// Prevent form submission
e.preventDefault();
});
在我提交表单的代码中,它通过将每个字段数据提交给模型并在客户端进行模型验证来检查每个字段。根据我的需要,此代码执行所有客户端验证。问题是在所有字段验证变为真后意味着没有显示错误消息,表单应该提交,但由于使用e.preventDefault();
它不允许在字段验证后提交表单。当我删除e.preventDefault();
时,它将首先提交表单,这样就不会有ajax表单验证。如何摆脱这个问题?