为键盘"1" "2"绑定onkeydown事件后,当同时触发这两个按键时如何让按键"2失效"请帮忙解答下

为键盘"1" "2"绑定onkeydown事件后,当同时触发这两个按键时如何让按键"2失效"

阅读 4.4k
5 个回答

keydown事件并不存在同时触发这种事,两个键都被按下的情况下,后按的一定会覆盖前面的一直被触发。
也许你的业务逻辑要求并不是这样,换个角度思考问题,可能有别的实现方式。

可以用&&来限制代码执行条件,比如1&&2被按下时执行代码

你可能要分别再绑定keyup事件,然后再弄一个变量。当任意一个keydown的时候把这个变量改成false,任意一个keyup的时候改成true。然后在keydown事件里加判断,只有变量是true的才会执行之后的内容。

一楼正解,根本不存在同时按了两个键的说法,必然是你先触发了1,又触发了2,你能实现的只是不在1被按完之后立马按2,这个酒很好解决了,设定一个记录上一次按1的时间,在1的处理事件中添加每次更新这个记录时间变量的逻辑,然后在b的处理事件中先计算这次按2距离上次按1的时间差,如果足够小让你觉得是“同时按下”那就直接return,否则你继续执行原本的业务逻辑。

但是这样可能会造成问题,因为是异步事件,你这个handler执行的时候其实并不是你按的时候,但是如果你要杜绝的是快速先按1,再按2我记得两个处理函数中间不太可能插入太多的调用,所以应该还是可行的,只是这个时间得你自己选择好才可以

在事件回调函数外命名一个作为状态的变量啊,然后触发按键的事件的时候判断,阻止掉不想要的按键事件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题