临时禁用Keyup事件时,文本输入是空白

Temporary Disable Keyup event when text input is blank

本文关键字:文本 输入 空白 事件 Keyup      更新时间:2023-09-26

我是jquery的初学者,但我已经尽力做到这一点,但不幸的是我错过了一些

当文本输入为空白时,我如何才能暂时禁用keyup事件,并在我输入了一些东西后再次启用它?

我不能在按下键时捕捉退格,所以我使用了keyup。这是我的代码

$('#searchBox').keyup(function(e){
if(e.keyCode != '18' && e.keyCode != '91' && e.keyCode != '17' && e.keyCode != '16' && e.keyCode != '20' && e.keyCode != '27' && e.keyCode != '113' && e.keyCode != '115' && e.keyCode != '118' && e.keyCode != '119' && e.keyCode != '120' && e.keyCode != '122' && e.keyCode != '123' && e.keyCode != '44' && e.keyCode != '19' && e.keyCode != '45' && e.keyCode != '46' && e.keyCode != '36' && e.keyCode != '33' && e.keyCode != '34' && e.keyCode != '35' && e.keyCode != '39' && e.keyCode != '37' && e.keyCode != '38' && e.keyCode != '9'){
    if(e.keyCode == '8' && $(this).val()==""){
        //what will i put here
    }else if(e.keyCode == '8' && $(this).val()!=""){
        refreshWookmark($(this).val());
    }else{
        refreshWookmark($(this).val());
    }
}
});

要禁用keyup功能或其他功能,请尝试以下操作

  if()
    {
    obj.keyup(function () {
    //code
    });
    }else{
    obj.unbind("keyup")
    }

不要禁用它,只需检查输入是否存在并且keyCode是您认为有效的:

$('#searchBox').on('keyup',function(e){
    var bad = ['18','91','17','16','20','27','113','115','118','119','120','122','123','44','19','45','46','36','33','34','35','39','37','38','9'],
        isBad = false;
    for(var i=bad.length;i--;){
        if(e.keyCode == bad[i]){
            isBad = true;
            break;
        }
    }
    if(this.value.length > 0 && !isBad){
        refreshWookmark(this.value);
    }
});

这只会在输入存在且keyCode正确时运行你想要的函数,我认为这就是你想要的。

另外,99.9%的时间你可以用this.value代替$(this).val()。这节省了将this包装成jQuery对象,然后使用内部方法获取值(基本上是this.value)的开销。

您可以在空白输入时使用return:

$("#idOfElement").keyup(function() {
    if (!this.value == '') {
        //do stuff
    } else {
        return;
    }
});

如果值为空,您就不能跳出处理程序吗?

$(element).keyup(function(e) {
    if (this.value.trim() == '')
        return;
    // do stuff
});