在javascript中,我是否可以在按下键后防止keyup事件?

在javascript中,我是否可以在按下键后防止keyup事件?,javascript,jquery,keyevent,Javascript,Jquery,Keyevent,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

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;
   }
});
他们没有联系

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

(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()
来存储状态,以便它与元素直接关联。

只需删除keyup事件?我编辑了我的问题以更好地解释,我必须控制相同的手势/键,当我按下按钮时,在某些情况下,我想阻止下一次keyup(同一把钥匙的!)。这就是我想知道两个事件keyup/down是否链接的原因。我想阻止同一个keyup,而不是每一个keyup。@Tobia-这就是它的作用。如果在按键按下时设置
block_keys
,按键释放时将处于该状态……而不是在释放时,再次按下,然后再次释放n、 如果我按以下顺序触发这些事件会发生什么:keydown(Akey)、keydown(Bkey)、keyUp(Bkey)、keyUp(Akey)?如果Akey有“某些条件”,它也会锁定B-keyUp事件。我在这里用小提琴解释这个解决方案不起作用的原因:(使用的条件只是一个示例)