Ada*_*itt 19 jquery jquery-validate
使用我的jquery验证配置,将onkeyup设置为true时出现以下错误.如果我将其设置为false,它会起作用,但在模糊字段之前我没有获得验证反馈,我希望在每个keyup上获得验证:
$("#signupForm").validate({
onkeyup: true,
onclick: false
// rules omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
TypeError: validator.settings[eventType].call is not a function
validator.settings[eventType].call(validator, this[0], event);
jquery.validate.js line 391
Run Code Online (Sandbox Code Playgroud)
Sud*_*oti 37
实际上,您需要将该onkeyup选项设置为接受被验证为参数的元素的函数,因此请尝试更改:
onkeyup: true,
Run Code Online (Sandbox Code Playgroud)
至
onkeyup: function(element) {$(element).valid()}
Run Code Online (Sandbox Code Playgroud)
Spa*_*rky 33
onkeyup默认情况下已启用,因此您无需将其设置为true.如果这样做,则会破坏插件中已内置的功能.
你有三个选择:
1) 保留onkeyup选项.validate().这样可以保持默认启用的onkeyup功能.(编辑:"默认情况下"表示只有在该字段最初由另一个事件验证后才会在每个"键入"事件上进行验证.)
演示:http: //jsfiddle.net/ZvvTa/
2) onkeyup可以设置false为禁用此选项.
演示:http: //jsfiddle.net/ZvvTa/1/
3) 替换onkeyup为您自己的回调函数以修改其操作方式.(演示使用默认功能)
演示:http: //jsfiddle.net/ZvvTa/2/
下面是默认的,未修改,onkeyup回调函数:
onkeyup: function( element, event ) {
if ( event.which === 9 && this.elementValue(element) === "" ) {
return;
} else if ( element.name in this.submitted || element === this.lastElement ) {
this.element(element);
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅:http: //docs.jquery.com/Plugins/Validation/validate#toptions
编辑:
默认情况下,插件在最初由另一个事件验证字段之后才会执行任何"键入"验证. ("懒惰"验证)
所以这里是一个更正确修改的onkeyup回调函数版本,它将提供即时 onkeyup验证. ("急切"验证)
演示:http: //jsfiddle.net/QfKk7/
onkeyup: function (element, event) {
if (event.which === 9 && this.elementValue(element) === "") {
return;
} else {
this.element(element);
}
}
Run Code Online (Sandbox Code Playgroud)