javascript - $(document).keydown/up 在使用辅助键时不起作用
问题描述
我有这个代码
$(document).keydown(function(){
$("#movecheck").text("true");
isMoving = true;
});
$(document).keyup(function(){
$("#movecheck").text("false");
isMoving = false;
});
目前,一次使用 1 个键时它工作正常,但是当使用 2 个键时,一个会被按住,另一个不会,isMoving
当第二个键不再被按下时返回 false,而第一个键仍然按下,我有一个防重影键盘,所以我知道这不是问题所在,所以我相信它可能与 jquery 如何检查某个键是否按下有关。
我怎样才能使它使用多个键工作?
任何帮助,将不胜感激
解决方案
您需要使用整数而不是布尔值,因为目前,无论您按下多少其他键,都isMoving
将始终设置为当您释放一个键时。false
这是一个使用整数变量的示例:
let pressedCount = 0;
$(document).keydown(function(event){
if (!event.originalEvent.repeat) {
pressedCount++;
setMoveCheck();
}
});
$(document).keyup(function(){
pressedCount--;
setMoveCheck();
});
function isMoving() {
return pressedCount !== 0;
}
function setMoveCheck() {
$("#movecheck").text(isMoving() ? "true" : "false");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="movecheck">false</div>
除此之外,您还必须检查是否keydown
因为按住某个键而生成了事件。
推荐阅读
- python - 熊猫在多行中拆分行
- python - zlib解压压缩时如何保留header和trailer
- python - 如何重定向到 django 中的动态 url
- android - 在android中缩小图像时找不到点的位置
- javascript - 连接一个字符串和
- java - cmd编译的记事本中使用多线程时出现未知命令错误
- reactjs - React 中的数据流:父子父,还是父子?
- json - 反应,无法读取未定义的属性“过滤器”
- r - 删除 DT::datatable 中的行阴影和水平线
- amazon-web-services - 如何在 EC2 实例的 Auto Scaling 组中添加交换内存