jQuery验证,禁用元素的{key} on

时间:2016-04-04 16:12:44

标签: jquery jquery-validate

我使用jQuery验证,我想禁用某个元素的keyup验证,所以我使用下面的代码: -

$("form").validate({
    onkeyup: function (element) {
        if (element.id == 'tx_username') {
            return false;
        }
    }

这只会禁用所有内容,而不仅仅是所需的元素。有谁知道如何禁用指定元素的keyup验证。 ' tx_username'在这种情况下

3 个答案:

答案 0 :(得分:1)

  

这只会禁用所有内容,而不仅仅是所需的元素。

当您使用onkeyup选项时,您的自定义功能将完全覆盖插件的默认功能。由于您没有else语句,因此如果该字段与tx_username不匹配,则不会发生任何其他情况...完全有效禁用onkeyup验证。

onkeyup: function (element) {
    if (element.id == 'tx_username') {
        return false;
    }
}

解决方案是将the default onkeyup code合并到你的......

onkeyup: function (element, event) {
    var excludedKeys = [
        16, 17, 18, 20, 35, 36, 37,
        38, 39, 40, 45, 144, 225
    ];
    if (element.id == 'tx_username') { // disable 'onkeyup' for this field
        return false;  
    } else { // otherwise, use the default code
        if (event.which === 9 && this.elementValue(element) === "" || $.inArray(event.keyCode, excludedKeys) !== -1) {
            return;
        } else if (element.name in this.submitted || element.name in this.invalid) {
            this.element(element);
        }
    }
}

DEMO:http://jsfiddle.net/ff77xbvb/

注意onkeyup函数的更高版本将忽略以下键...

// Shift       => 16
// Ctrl        => 17
// Alt         => 18
// Caps lock   => 20
// End         => 35
// Home        => 36
// Left arrow  => 37
// Up arrow    => 38
// Right arrow => 39
// Down arrow  => 40
// Insert      => 45
// Num lock    => 144
// AltGr key   => 225

答案 1 :(得分:0)

尝试以下内容。

     onkeyup: function (element, event) {

     if (event.which === 9 && this.elementValue(element) === "") {
           return;
     } else {
     if (element.id != 'tx_username') {
           this.element(element);
     }

推荐链接 - jQuery.validate.js onkeyup = true error

答案 2 :(得分:-1)

Try using jQuery's .off() method:

$("#tx_username", form).off("keyup");

DEMO