jQuery.validate.js onkeyup = true错误

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)

  • 只需删除`onkeyup`选项即可恢复插件中内置的"onkeyup"功能,这比`$(element).valid()`更复杂一些. (3认同)

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)


Aru*_*hny 5

@Sparky是对的,正确的答案是删除onkeyup选项,我的小提琴正在工作,因为我删除了onkeyup选项不是因为我改变它keyup.

默认情况下,验证将在keyup事件上进行,如果要关闭此功能,则必须添加设置onkeyup: false.

查看更新的演示.

演示:小提琴