如何在jQuery中识别长按箭头键

Sac*_*hin 1 javascript jquery keypress keydown

我有两个选择对自己keypresskeydown.我倾向于使用,keypress因为它记录了一个事件,即使重复键,即长按键.但问题是keypress只在Firefox 中记录箭头键等特殊键.如果我想通过浏览器进行操作,那么我必须使用,keydown但是长按将被记录为单个事件.

任何帮助表示赞赏.

lan*_*nzz 9

var pressed = null;
$(element).on('keydown', function(event) {
    pressed = +new Date();
    // do whatever else you need upon key down
});
$(element).on('keyup', function(event) {
    var duration = +new Date() - pressed;
    pressed = null;
    // do whatever you need to do based on the duration of the press
});
Run Code Online (Sandbox Code Playgroud)

我把它作为练习留给你来解决对多个并发键的支持.

  • 你的代码不起作用.您必须存储keyCode以确保keyup与keydown关联. (3认同)
  • 同意@Derek,当它在所有浏览器中都不起作用时使用`Date.now()`有什么意义,并且几乎没有比`+ new Date`更少的输入.`+ new Date`**不会**返回一个新的日期实例,事实上,shim的方式`Date.now()`是`+ new Date()`,如https://developer.mozilla所示.组织/ EN/JavaScript的/参考/ Global_Objects /日期/现在#跨browser_compatibility (2认同)
  • @lanzz不,根据MDN,它是ecmascript第5版的一部分,该版本于2009年出版 (2认同)