触发一个keyPress事件的一个事件

时间:2017-02-13 19:09:17

标签: javascript jquery keypress keyboard-events

我试图找到一种方法来触发一个事件,就像按下一个按键而不是按下按键一样。压了。所以我做了这样的事情:

$(document).keypress(function(e) {
if(e.which == 102) {
    bool = true;    
  }
});

然后在handleEvents setTimeout

if (bool){
        //do thing just one time
    }

2 个答案:

答案 0 :(得分:1)

使用keydown代替keypress

按时间顺序排列如下:

  • 按键向下按键



$(document).keypress(()=> console.log('I am keypress'))
$(document).keydown(()=> console.log('I am keydown'))
$(document).keyup(()=> console.log('I am keyup'))

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>Press any key</h1>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果您正在寻找单例类型事件(事件处理程序只运行一次),您可以使用jQuery函数.one()。这将在事件处理程序运行一次后自动取消绑定。例如:

$(document).one('keyup', function(event){
  if (event.keycode === 102){
    // code...
  }
});

*请注意,在按键类型事件上使用它似乎不可取,因为无论是否按下了正确的键,处理程序都将在第一次运行时解除绑定。

听起来您希望事件处理程序仅在用户完成按键操作后才能运行。与其他评论一样,我建议您使用'keydown''keyup'事件。