首页 > 解决方案 > 我可以在javascript中按键后阻止按键事件吗?

问题描述

keydown-keyup js事件是否链接?我可以在 keydown 期间控制一个事件以防止同一键的下一个 keyup 事件吗?

$(document).keydown(function (e) {
   if(some_condition)
       e.preventDefault(); //I don't want keyup after this
}).keyup(function (e) {
   if(keydown_was_prevent_default) {
       alert("Exit without keyup!");
       return false;
   }
});

标签: javascriptjquerykeyevent

解决方案


他们没有联系。

您可以使用变量在它们之间传递状态。

(function () { // IIFE to avoid making `block_keys` a global

    let block_keys = false;

    $(document).on("keydown", event => {
        if (some_condition()) {
            block_keys = true;
        } else {
            block_keys = false;
        }
    });

    $(document).on("keyup", event => {
        if (block_keys) {
            event.preventDefault();
        }
    });

}());

如果您要在一个元素上执行此操作,我可能会使用data()它来存储状态,以便它直接与该元素相关联。


推荐阅读