+ -
当前位置:首页 → 问答吧 → 怎么样判断同时按下了某两个键以及按顺序按下了某些键呢

怎么样判断同时按下了某两个键以及按顺序按下了某些键呢

时间:2009-05-22

来源:互联网

请高手说明一下大致的原理 谢谢了

作者: baljeans   发布时间: 2009-05-22

同时按下两个常规按键是不能判断的
比如你在记事本里同时按下d和f,可能只出现连续的dffffffffffff或者fdddddddddd,取决与你按下瞬间哪个后按
如果是alt ctrl之类的是可以根据 e.ctrl之类的判断的。

按顺序按某些键,可以建立一个数组,然后不断push按下的按键的keycode(e.which)
然后判断 在这个数组的toString()中查找你需要的特定字符

今天刚看到博文:
http://www.planabc.net/2009/05/21/how_to_implement_konami_code_with_javascript/

作者: shawphy   发布时间: 2009-05-22

你可以先看看这个:
复制代码
  1. <div id="down">down: </div>
  2. <div id="press">press: </div>
  3. <div id="up">up: </div>
  4. <script type="text/javascript">//<![CDATA[
  5. var $down = $('#down');
  6. var $up = $('#up');
  7. var $press = $('#press');
  8. $(document).keydown(function(event){
  9.   $down.append(event.keyCode + ' ');
  10. }).keyup(function(event){
  11.   $up.append(event.keyCode + ' ');
  12. }).keypress(function(event){
  13.   $press.append(event.keyCode + ' ');
  14. });
  15. //]]></script>
了解这3者的关系后,你就可以用一个全局的数组变量来保存当前的按键了。

方法是触发down时,把keyCode push到数组里,并删除重复元素;触发up时,用$.grep从数组中删除该keyCode。
在任意时刻,这个数组里都保存了当前所按的按键,并且顺序是根据按键顺序排列的。

实现很简单,如果你仍然不知道怎么做,可以参考这里:
http://www.keakon.cn/bbs/thread-1301-1-1.html
[ 此帖被keakon在2009-05-22 01:43重新编辑 ]

作者: keakon   发布时间: 2009-05-22

多谢两位高人指点 已经做出来了 十分感谢

作者: baljeans   发布时间: 2009-05-22

2楼的想法不错

作者: shawphy   发布时间: 2009-05-23

相关阅读 更多