扫码关注官方订阅号
为键盘"1" "2"绑定onkeydown事件后,当同时触发这两个按键时如何让按键"2失效"
认证0级讲师
keydown事件并不存在同时触发这种事,两个键都被按下的情况下,后按的一定会覆盖前面的一直被触发。也许你的业务逻辑要求并不是这样,换个角度思考问题,可能有别的实现方式。
可以用&&来限制代码执行条件,比如1&&2被按下时执行代码
你可能要分别再绑定keyup事件,然后再弄一个变量。当任意一个keydown的时候把这个变量改成false,任意一个keyup的时候改成true。然后在keydown事件里加判断,只有变量是true的才会执行之后的内容。
一楼正解,根本不存在同时按了两个键的说法,必然是你先触发了1,又触发了2,你能实现的只是不在1被按完之后立马按2,这个酒很好解决了,设定一个记录上一次按1的时间,在1的处理事件中添加每次更新这个记录时间变量的逻辑,然后在b的处理事件中先计算这次按2距离上次按1的时间差,如果足够小让你觉得是“同时按下”那就直接return,否则你继续执行原本的业务逻辑。
但是这样可能会造成问题,因为是异步事件,你这个handler执行的时候其实并不是你按的时候,但是如果你要杜绝的是快速先按1,再按2我记得两个处理函数中间不太可能插入太多的调用,所以应该还是可行的,只是这个时间得你自己选择好才可以
在事件回调函数外命名一个作为状态的变量啊,然后触发按键的事件的时候判断,阻止掉不想要的按键事件
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
keydown事件并不存在同时触发这种事,两个键都被按下的情况下,后按的一定会覆盖前面的一直被触发。
也许你的业务逻辑要求并不是这样,换个角度思考问题,可能有别的实现方式。
可以用&&来限制代码执行条件,比如1&&2被按下时执行代码
你可能要分别再绑定keyup事件,然后再弄一个变量。当任意一个keydown的时候把这个变量改成false,任意一个keyup的时候改成true。然后在keydown事件里加判断,只有变量是true的才会执行之后的内容。
一楼正解,根本不存在同时按了两个键的说法,必然是你先触发了1,又触发了2,你能实现的只是不在1被按完之后立马按2,这个酒很好解决了,设定一个记录上一次按1的时间,在1的处理事件中添加每次更新这个记录时间变量的逻辑,然后在b的处理事件中先计算这次按2距离上次按1的时间差,如果足够小让你觉得是“同时按下”那就直接return,否则你继续执行原本的业务逻辑。
但是这样可能会造成问题,因为是异步事件,你这个handler执行的时候其实并不是你按的时候,但是如果你要杜绝的是快速先按1,再按2我记得两个处理函数中间不太可能插入太多的调用,所以应该还是可行的,只是这个时间得你自己选择好才可以
在事件回调函数外命名一个作为状态的变量啊,然后触发按键的事件的时候判断,阻止掉不想要的按键事件