有一个相当复杂的php POST表单,使用jQuery进行大量数据验证,如下所示。但是,我遇到了一些问题,因为在验证完成之前似乎已经提交了表单。
问题:在jQuery甚至返回true或false之前,验证是否可能需要很长时间,默认情况下提交表单?如果是这样,处理这个问题的最佳方法是什么?
jQuery('#order-form').submit(function(){
// Validate many different fields in various ways
if (valid)
return true;
else
return false;
});
答案 0 :(得分:0)
由于我们无法看到您的代码及其验证方式,因此您可以通过其他方式尝试自己的功能。 尝试使用提交按钮上的点击功能验证您的项目,如果一切正常,请提交。
e.g。
$('#btn1').click(function(e){
var valid
if($('#ex1').val() == ""){
valid = false;
}else{
valid = true;
}
if(valid){
$("#testform").submit();
}else{
alert("not validated");
}
e.preventDefault();
});
以小提琴为例。
此外,我使用此插件来验证我的表单。它可以验证任何大小的形式,甚至是一些复杂的领域。
https://github.com/posabsolute/jQuery-Validation-Engine
它运作良好,如果你自己做自己的验证,可能会省去你的麻烦。
答案 1 :(得分:0)
以下是代码片段作为联系表单的示例,可以帮助您,我使用jqueryvalidation.org插件并使用ajax发布表单
$(function() {
var form = $("#contact_form").validate();
$('#progressbar').hide();
$('#success').hide();
$('#failure').hide();
$(document).ajaxStart(function() {
$( "#progressbar" ).show();
});
$(document).ajaxStop(function() {
$( "#progressbar" ).hide();
});
$("form#contact_form").submit(function() {
if(form.valid())
{
//any other validations here
var name = $("#txtName").val();
var email = $("#txtEmail").val();
var phone = $("#txtPhone").val();
var message = $("#txtMessage").val();
$.ajax({
url: "process_contact.php",
type: "POST",
data: {'name': name,
'email': email,
'phone': phone,
'message': message},
dataType: "json",
success: function(data) {
if(data.status == 'success')
{
$('#contact_form').hide();
$('#success').show();
}
else if(data.status == 'error')
{
$('#failure').show();
}
}
});
return false;
}
});
});
答案 2 :(得分:0)
据我所知,只有两种情况可以发生:
关于客户端验证,您是否尝试过jQuery验证?它在两个事件中验证表单中的每个元素:
您还可以添加自定义方法,为每个元素中的每个条件执行唯一验证。
有关jQUery验证的更多信息和示例(有和没有ajax):here。