【问题标题】:How to detect: Press twice the same key, but hold it the second time for 2 seconds如何检测:按两次相同的键,但第二次按住 2 秒
【发布时间】:2013-05-09 04:29:14
【问题描述】:

如何检测:按两次同一个键,第二次按住2秒?

我正在寻找一种有效的方法来检测键码 37(左箭头)(或必要时的任何其他键)的键按下事件,然后在释放 1.5 或 2 秒后再次按下同一键码键,在给定的延迟内,比如 1 秒。

这是返回而不混淆“返回,在上一页”(这是我想要做的)和“在这个元素之前的元素,在同一页面上”

我已经尝试在 $(document.ready() 标记中使用 old_keycode 和 old_keycode_timepressed 和 new_keycode new_keycode_timepressed,但是我需要为我想要的每个键码复制/粘贴整个代码,并且代码本身效率不高。

有人听说过可以帮助我的插件,或者有人愿意帮助我吗?

感谢您的宝贵时间。

【问题讨论】:

  • 通常为了“返回”,我们使用这个漂亮的 (←) 按钮,或者一些极客使用 [Backspace]。有趣的是,您正在尝试实现一个在 www 上不常见的 UI(用户界面)。我建议你坚持一些对你和用户来说不那么令人沮丧的事情(intuitive 是正确的词吗?)。
  • 好吧,我是唯一一个使用它的人,而且它将与一个基本的红外遥控器一起使用,我相信用户对那个 UI 没问题;)

标签: jquery navigation keyboard-shortcuts


【解决方案1】:

jsFiddle demo

var twice_37 = 0;

$(document).on('keyup', function( e ){

  if(e.which===37){         // If left arrow    

    if(twice_37===1){       // (remember that twice_37 is 0 initially)
      alert('Do something! (you pressed Left twice!)');
    }

    twice_37 = 1;          // Set to 1 and...
    setTimeout(function(){ // ...reset to 0 after 1s
      twice_37 = 0; 
    }, 1000);

  }

});

【讨论】:

  • 哈哈,这个方法比我的简单。。谢谢你抽时间 RoXon ;)
  • @JeremyDicaire ;) 不客气,删除了 clearTimeout 行,这是不必要的。
猜你喜欢
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
相关资源
最近更新 更多