jQuery表单验证在提交时需要很长时间

时间:2013-07-02 12:51:44

标签: php jquery validation

有一个相当复杂的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;

});

3 个答案:

答案 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();
});

以小提琴为例。

http://jsfiddle.net/em62Z/1/

此外,我使用此插件来验证我的表单。它可以验证任何大小的形式,甚至是一些复杂的领域。

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)

据我所知,只有两种情况可以发生:

  1. 您的验证代码中有错误,或
  2. javascript已关闭。
  3. 关于客户端验证,您是否尝试过jQuery验证?它在两个事件中验证表单中的每个元素:

    1. 每次更改元素,
    2. 提交表单时。
    3. 您还可以添加自定义方法,为每个元素中的每个条件执行唯一验证。

      有关jQUery验证的更多信息和示例(有和没有ajax):here