检测键盘箭头键已按下多长时间?

时间:2016-08-24 12:33:54

标签: javascript jquery jquery-ui javascript-events

我知道如何通过这种方式检测Javascript中的按键:

{{1}}

我想知道是否有可能我们可以检测箭头按键的长度仅适用于我需要处理的滚动功能。

由于

3 个答案:

答案 0 :(得分:1)

抓住keydown事件,启动计时器,并在keyup事件上停止计时器。

(function() {
   var PRESSING = false;
   var timer;

   $(document).keydown(function(e) {

      //Ignore repeated event to be fired.
      //otherwise it will reset timer.
      if(e.which === 38 && PRESSING) {
         return e.preventDefault();
      }

      //Start timer
      timer  = Date.now();          
      console.log("Key press");
      PRESSING = true;
   });

   $(document).keyup(function(e) { 

      //On arrow key up, stop timer and log result
      if(e.which === 38) {
         PRESSING = false;
         var time = Date.now() - timer;
         console.log("Key pressed for " + time/1000+ "sec");
      }
      e.preventDefault();
   })
}());

示例http://jsbin.com/vowabiqelu/edit?js,console,output

答案 1 :(得分:0)

根据我的理解,如果你正在制作滚动功能,你应该开始滚动keydown并停在keyup上。 keyup事件可以在keydown事件中设置。

提供一个jsfiddle,我可以帮助你。

答案 2 :(得分:0)

        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
      });