完成所有验证后,在成功的jQuery验证插件上调用函数

时间:2012-07-05 12:58:04

标签: jquery

<script id="demo1" type="text/javascript">

jQuery(document).ready(function () {
    var validator = jQuery("#login").validate({
        rules: {
            pwd: "required",
            log: {
                required: true,
                email: true,
            },
        },
        messages: {
            pwd: "Please enter password",
            log: {
                required: "Email is required",
                email: "Please enter a valid Email Address",
            }
        },
        errorPlacement: function (error, element) {
            if (element.is(":radio"))
                error.appendTo(element.parent().next().next());
            else if (element.is(":checkbox"))
                error.appendTo(element.parent().next("span#error"));
            else
                error.appendTo(element.parent().next("div#error"));
            //error.appendTo ('div#error').show().fadeOut(4500);
        },
        success: function (label) {
            // set &nbsp; as text for IE
            label.html("&nbsp;").addClass("checked");
        }
    });
});
</script>

我有这个脚本来验证表单,这个脚本适用于我的表单,我希望在所有字段都经过验证后运行一个函数,意味着输入是正确的,如果我调用函数内部成功然后它每次运行时运行单输入验证,但我想在所有输入正确后调用它,请帮助,我尝试从最后一小时不同的方式,没有结果..

4 个答案:

答案 0 :(得分:1)

以下代码为我工作

jQuery(document).ready(function() {

var validator = jQuery("#login").validate({

    rules: {

            pwd: "required",

        log: {

            required: true,

            email:true,

        },

    },

    messages: {

        pwd: "Please enter password",

        log: {

            required: "Email is required",

            email:"Please enter a valid Email Address",

        }

    },

    submitHandler: function(form) {
        // call your function
        $("#login")[0].submit(); 
    }

});

});

答案 1 :(得分:0)

制作一个柜台:

  

var successfulValidations = 0;

在您的成功功能中添加:

  

成功:功能(标签){       successfulValidations ++;   }

验证后,检查所有经过验证的元素的数量:

if(validatedElementsCount === successfulValidations) {
    doSomething();
}

答案 2 :(得分:0)

您可以使用validator.form()方法验证表单

var validator=$("#find_your_form").validate({onsubmit: false});
......................................
if(validator.form()){
  //Validate passed
  ohYeh();
} else {
  //Validate 
  ohCrap();
}

答案 3 :(得分:0)

我曾经遇到过类似的问题。也许我的方法也可以帮到你。

在验证时,每个输入都添加了validinvalid类。

然后我只是通过输入循环并检查它们是否都有效:

function allValid(inputs) {
  for(var x = 0; x < inputs.length; x++) {
    if(!$(inputs[x]).hasClass('valid')) {      
      return false;
    }
  }
  return true;
};

var myInputs = $('#MyForm input');

if(allValid(myInputs)) {
  // All inputs are valid!
}