jQuery 验证,为元素禁用 onkeyup

jQuery validation, disabling onkeyup for an element

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

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

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

尝试使用 jQuery 的 .off() method:

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

DEMO

试试下面的方法。

     onkeyup: function (element, event) {

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

参考 link - jQuery.validate.js onkeyup = true error

This just disables it for everything and not just the desired element.

当您使用 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);
        }
    }
}

演示: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