jQuery -hot键组合

时间:2011-08-25 15:23:29

标签: php jquery

  

可能重复:
  How can I check with JQuery, if a certain word is typed in the Browser?

好的,我发现这个很棒的插件是为了捕获和执行jQuery的热键命令。 http://plugins.jquery.com/project/hotkeys

在我参与其中之前我的问题是我注意到键之间的“+”。我正在寻找可以捕获用户输入字符串后输入内容的内容。

目标是调用一个函数,该函数将显示存储在数据库中的“作业”的快速数据。例如:(所有这些都是关键抚摸而不是按住组合)

如果用户键入此组合:c v l

然后调用一个函数来监听下一个命令。然后用户键入:1 2 3

然后这将触发另一个函数来从数据库中找到作业:123。

基本上我正在寻找一个关于如何实现这一点的想法。如果有人有任何想法或我需要提供更多详细信息,请告诉我。谢谢!

2 个答案:

答案 0 :(得分:1)

我会简单地添加一个keyup函数并查看被按下的键。所以像这样的伪代码:

my_array_interesting_keys = [c,v,l]
current_sequence = null

window.onKeyup:
   if(key in my_array_interesting_keys) {
      current_sequence[] = key
   } else {
      current_sequence = null 
      // abort current sequence
   }

   if(current_sequence.length == 3) {
       if(implode('', current_sequence) == implode('', my_array_interesting_keys)) {
          // wait for number to be entered now
       } else {
          current_sequence = null
       }
   }

显然,这需要改进并转换为实际的JS。

答案 1 :(得分:1)

如果我正确地读取该插件的样本,它不会执行多键序列,只会执行单个键事件。例如点击'a',它会触发一个处理程序并说A被击中了。在开火之前,它不会等待'b'和'c'来。

这意味着您必须让按键处理程序跟踪以前的按键操作,并且只有在按下适当的键时才移动到下一个阶段。

e.g。用户输入'c'然后'v' - 好,这是一个很好的序列。但如果他们接下来输入'#',那么你清空累加器,因为cv#没有任何意义。如果他们输入'l'作为第3个字符,那么你可以弹出提示记录ID等...