javascript - 我可以在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;
}
});
解决方案
他们没有联系。
您可以使用变量在它们之间传递状态。
(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()
它来存储状态,以便它直接与该元素相关联。
推荐阅读
- javascript - 剪贴板 API 和操作系统之间不一致的浏览器行为
- linux - 将所有内容移动到新的子文件夹
- python - Pandas:根据索引和列将一个数据帧的值替换为另一个数据帧的值
- flutter - 自定义命中测试区域
- gradle - 无论如何要在构建任务中执行特定任务吗?
- python - 在机器人框架中找不到自定义关键字
- sql - Postgres 不能同时插入单引号和分号问题
- g++ - 在较旧的 g++ 环境中使用 c++17 预编译头文件
- javascript - 如何编码像“\u00c3\u00a7”这样的unicode序列?
- protocol-buffers - 在没有它们的情况下解析协议缓冲区数据