我正在使用jQuery Validation Plugin,并且想在插件检测到有效或无效输入时运行自己的代码。
我已经确定,我需要的两个.validate()
选项是success
和showErrors
,我可以让它们两个都可以独立工作:
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");
}
}