首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Jquery中检测双退格事件

在Jquery中检测双退格事件
EN

Stack Overflow用户
提问于 2012-04-13 22:12:57
回答 3查看 941关注 0票数 1

我知道我可以像这样检测到一个退格键:

代码语言:javascript
复制
$("#myelement").bind ("keyup", function(event) {
    if (event.keyCode==8) {
        alert ("Backspaced!!!");
    }
});

我如何检测发生在1秒内的双退格符,就像双击一样?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-13 22:16:47

在jQuery.com本身的custom.js文件中,有一些可能对您有帮助的代码。它监听用户击键中的"konami“代码。如果它检测到特定的键序列,如变量konami中所示,它将做出响应。

代码语言:javascript
复制
// Hehe.
if (window.addEventListener) {
  var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
  window.addEventListener("keydown", function(e) {
    kkeys.push(e.keyCode);
    if (kkeys.toString().indexOf(konami) >= 0) 
      window.location = "http://ejohn.org/apps/hero/";
  }, true);
}

这段代码不能做的是跟踪上一次按键和当前按键之间的时间。但请注意,只需稍作修改,我们就可以模仿他们的代码,并生成您想要的输出。

代码语言:javascript
复制
<script>
  (function($){
    // Prep our variables
    var keys = [], lastEntry = 0, seq = '8,8';
    // Listen for keydown events
    $(document).keydown(function(e){
      // Push new key into keys array
      keys.push(e.which);
      // See if we need to respond
      if ( keys.toString().indexOf(seq) != -1 )
        if ( e.timeStamp - lastEntry <= 1000 )
          console.log( 'Correct keys, in the current time.' );
      // Update time of last keydown
      lastEntry = e.timeStamp;
    });
  })(jQuery);
</script>
票数 1
EN

Stack Overflow用户

发布于 2012-04-13 22:15:26

您必须跟踪上次按下退格键的时间。然后,每当你的事件处理程序get被调用时,你都会检查这个值,看看它是否少于1秒,如果是,你就会按下双退格键。如果不是,则将最后一个回退时间的值重置为当前时间,并且不执行任何代码。

在伪代码中:

代码语言:javascript
复制
last_timestamp = 0
onkeyup () {
  if key == backspace {
    if now () - last_timestamp <= 1 {
      // execute code
      last_timestamp = 0
    }
    else {
      last_timestamp = now ()
    }
  }
}
票数 1
EN

Stack Overflow用户

发布于 2012-04-13 22:23:44

代码语言:javascript
复制
var flag=false;
$("#myelement").on("keyup", function(e) {
    if ((e.keyCode ? e.keyCode : e.which) == 8) {
        setTimeout(function() {flag=false}, 1000);
        if (flag) {
            flag=false;
            alert('backspace twice');
        }
        flag=true;
    }else{
        flag=false;
    }
});​

FIDDLE

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10142470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档