我的表单onSubmit正在调用:
onsubmit="validate(this); return false;"
validate()如下:
function validate(obj) {
$.ajax({
url : "ajax/validate_check.php",
type : "POST",
data : $("#" + obj.id).serialize(),
success : function(data) {
$('#' + obj.id + ' :input.form_errors').removeClass('form_errors')
data = $.parseJSON(data);
if(data['error_count'] >= 1) {
$.each(data, function(i, item) {
$('#' + i).addClass('form_errors');
});
} else {
$('#' + obj.id).submit();
}
}
});
}
当我有0个错误时,它试图提交表单,但我得到了一个无限循环。我意识到它正在发生,因为我的onSubmit再次调用该函数。我准备好后如何实际提交表格?解决这个问题的正确方法是什么?
答案 0 :(得分:1)
您的验证函数应该返回true或false,具体取决于错误。
onsubmit = "return validate(this)"
function validate(obj){
...
if(data['error_count'] >= 1) {
$.each(data, function(i, item) {
$('#' + i).addClass('form_errors');
});
return false; //stop submitting
} else {
return true;//continue submitting
}
}
虽然,因为你使用的是jquery:
$("#formid").submit(function(){
//your validation code
});
可能会更好。
查看this page了解详情。有一个很好的例子。
答案 1 :(得分:0)
您已提交表单以进行验证。
在} else {
上,您无法再次提交,正如您所注意到的那样。您应该调用函数将其提交到whatever_process_the_validated_data.php
虽然我建议使用相同的.php
来验证和处理数据 - 每个类都有一个类或函数。这样你就可以:
$('.forms_that_need_validation').submit(function() {
$.ajax({
url : "ajax/data_validation_and_processing.php",
type : "POST",
data : $(this).serialize(),
success : function(data) {
$(this + ' :input.form_errors').removeClass('form_errors')
data = $.parseJSON(data);
if(data['error_count'] >= 1) {
$.each(data, function(i, item) {
$('#' + i).addClass('form_errors');
});
} else {
location.reload();
}
}
});
return false;
});
如果数据无法验证,则会发生错误 - 您应该编写.php
代码,以便在未经过验证时不处理数据。否则,数据已经过验证和处理,然后只是重新加载页面。