我正在使用jQuery Validation Plugin,并且想在插件检测到有效或无效输入时运行自己的代码。

我已经确定,我需要的两个.validate()选项是successshowErrors,我可以让它们两个都可以独立工作:

var validator = $('#form').validate({
  rules: {
    name: "required",
    email: {
      required: true,
      email: true
    }
  },
success: function() {
  console.log('success');
}


只要输入有效,该日志就会记录success。并且showErrors也可以正常工作:

var validator = $('#form').validate({
  rules: {
    name: "required",
    email: {
      required: true,
      email: true
    }
  },
showErrors: function() {
  console.log('error');
}


但是,当我尝试将两者结合时,无论输入是否有效,每次都会记录error

var validator = $('#form').validate({
  rules: {
    name: "required",
    email: {
      required: true,
      email: true
    }
  },
success: function() {
  console.log('success');
},
showErrors: function() {
  console.log('error');
}


选项的顺序没有任何作用。

有谁知道为什么这两个选项不能同时使用,以及如何在有效和无效输入上运行自己的函数?

最佳答案

不仅仅是在检测到错误时才调用“ showErrors”,无论您键入什么值,每次更改输入都会调用它。

“ showErrors”接收两个参数:“ errorMap”和“ errorList”。要验证是否确实存在错误,您必须检查以下值之一:

showErrors: function(errorMap, errorList) {
  if (errorsList.length > 0) {
    console.log('error');
  }
}


您还可以在showErrors函数中处理“成功”事件,因为它是在当前验证程序上下文中调用的。

showErrors: function(errorMap, errorList) {
  if (errorsList.length == 0) {
    this.currentElements.addClass("success");
  }
}

09-15 22:11