首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript按键码"+1 enter“和"-1 enter”

Javascript按键码"+1 enter“和"-1 enter”
EN

Stack Overflow用户
提问于 2016-05-22 23:49:04
回答 2查看 360关注 0票数 1

有人知道如何在Javascript中检测按下"+1 enter“和"-1 enter”键吗?我想逐个检测按键代码,而不是一次按下。

但是当我写下面的代码时,没有给出任何效果。

代码语言:javascript
复制
// +1 enter
$(document).keydown(function(e) {
    if (e.keyCode == 107 && e.keyCode == 49 && e.keyCode == 13) {
    window.alert("+1");
    }
});

// -1 enter
$(document).keydown(function(e) {
    if (e.keyCode == 109 && e.keyCode == 49 && e.keyCode == 13) {
    window.alert("-1");
    }
});

对于您的专业意见,请。

EN

回答 2

Stack Overflow用户

发布于 2016-05-23 00:27:30

为了实现这一点,您需要能够跟踪以前按下的键。尝试以下操作:

代码语言:javascript
复制
// These are just used to display the result in the DOM--you can delete this
var $keyCodes = document.getElementById('key-codes');
var $result = document.getElementById('result');

// Used to keep track of your key presses
var trackKeyCodes = (function() {
  // Keep a private array of key codes to track
  var keyCodes = [];
  // This is the actual function that gets stored in trackKeyCodes
  return function(keyCode) {
    // Only store the last 3 key codes
    if (keyCodes.length === 3) keyCodes.splice(0, 1);
    // Add the next key code
    keyCodes.push(keyCode);
    // This just displays it in the DOM for you to see--you can delete this
    $keyCodes.innerHTML = keyCodes.join(', ');
    return keyCodes;
  };
})();
// Used to actually check the key presses
var checkKeyCodes = function(keyCodes, first, second, third) {
  return keyCodes[0] === first && keyCodes[1] === second && keyCodes[2] === third;
};

// +1 enter
$(document).keydown(function(e) {
  var keyCodes = trackKeyCodes(e.keyCode);
  if (checkKeyCodes(keyCodes, 107, 49, 13)) {
      $result.innerHTML = '+ 1';
  } else if (checkKeyCodes(keyCodes, 109, 49, 13)) {
      $result.innerHTML = '- 1';
  } else {
      $result.innerHTML = '';
  }
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
KeyCodes: <span id="key-codes">-</span>
</p>
<p>
Result: <span id="result">-</span>
</p>

票数 0
EN

Stack Overflow用户

发布于 2016-05-23 00:35:15

您可以使用以下函数:

代码语言:javascript
复制
$(document).keydown((function() {
    var codes = [];
    return function(e) {
        if (e.keyCode == 107 || e.keyCode == 109 || e.keyCode == 49 || e.keyCode == 13) {
            codes.push(e.keyCode);
            if (codes.toString().indexOf('107,49,13') >= 0) {
                alert('+1');
                codes.splice(0, codes.length);
            } else if (codes.toString().indexOf('109,49,13') >= 0) {
                alert('-1');
                codes.splice(0, codes.length);
            }
        } else {
            codes.splice(0, codes.length);
        }
    };
})());

基本上,您只需找到某种方法来存储以前按下的键,然后在每次按下新键时检查它们。在本例中,它被存储在一个生命周期闭包内的一个变量中。

JSFiddle

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

https://stackoverflow.com/questions/37376401

复制
相关文章

相似问题

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