跟踪第一个按键事件

时间:2014-08-23 13:37:48

标签: javascript keypress

出于原因,我必须依赖keypress而不是keydown/keyup。如果按下该键,keypress会反复触发事件。如何只跟踪第一次按键?

对于keydown/keyup,这不会有问题,因为有一个专门的keyup事件。但keypress不是这种情况。

2 个答案:

答案 0 :(得分:1)

检查事件的“重复”属性(https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent

如果它是假的那么它是第一个事件,否则为真。

使用jquery的示例:

$("#someid").on("keypress", function(e){
    if(!e.originalEvent.repeat){console.log("first keypress")};
})

答案 1 :(得分:0)

“重复”属性确实在Safari中不起作用。它仅适用于基于Gecko的浏览器。代替这一点,试试这个(如果你绝对必须使用“按键”而不是替代品):

var lastCode = -1;
$("#someid").on("keypress", function(e) {
  var code = e.keyCode || e.which;
  if (lastCode !== code) {
    // do something
  }
  lastCode = code;
});