在javascript中,我是否可以在按下键后防止keyup事件?
keydown-keyup js事件是否链接?我是否可以在keydown期间控制事件以防止同一个键的下一个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
$(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事件。我在这里用小提琴解释这个解决方案不起作用的原因:(使用的条件只是一个示例)