用jQuery判断当前所按的按键

标签:JavaScript, jQuery

刚看到个问题,如何得知同时按下了哪几个键以及按键顺序(难道是格斗游戏的组合键?),其实jQuery实现起来是很简单的。

方法就是用一个外部的数组保存当前按键。
在触发keydown时,把keyCode push到数组里,并删除重复元素;触发keyup时,用$.grep从数组中删除该keyCode。

实现代码如下:
当前按键:<span id="msg"></span>
<script type="text/javascript">
Array.prototype.unique = function () { //这个是删除重复元素用的,可惜$.unique只能处理DOM数组。
  var o = {};
  for (var i = 0, j = 0; i < this.length; ++i) {
    if (o[this[i]] === undefined) {
      o[this[i]] = j++;
    }
  }
  this.length = 0;
  for (var key in o) {
    this[o[key]] = key;
  }
  return this;
};
var $msg = $('#msg');
var keys = [];
$(document).keydown(function(event){
  keys.push(event.keyCode);
  keys.unique();
  $msg.html(keys.join(' '));
}).keyup(function(event){
  keys.push(event.keyCode);
  keys = $.grep(keys, function (n) {return n != event.keyCode;});
  $msg.html(keys.join(' '));
});
</script>

0条评论 你不来一发么↓

    想说点什么呢?