2011-08-25 79 views
1

可能重複:
How can I check with JQuery, if a certain word is typed in the Browser?jQuery的-hot組合鍵

好吧,我爲了捕捉和jQuery的執行熱鍵命令,發現這個偉大的插件。 http://plugins.jquery.com/project/hotkeys

在我參與其中之前,我注意到了鍵之間的「+」。我正在尋找能夠捕獲用戶輸入字符串後輸入內容的東西。

目標是調用一個函數,該函數將顯示存儲在數據庫中的「作業」的快速數據。例如:(所有這一切都是關鍵撫摸不按住組合)

如果用戶鍵入該組合:(C V)升

然後一個函數被調用,以監聽下一個命令。然後用戶鍵入:1 2 3

然後,這會觸發另一個函數從數據庫中找到job:123。

基本上我正在尋找一個關於如何這可能是一個想法。如果任何人有任何想法,或者如果我需要提供更多的細節,請讓我知道。謝謝!

回答

1

我會簡單地添加一個按鍵功能,並看看被按下的按鍵。所以像這樣的僞代碼:

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

如果我正確讀取該插件的樣本,它不會執行多重鍵序列,而只會執行單個關鍵事件。例如擊中'a'時,它觸發一名經理並說A被擊中。它不會坐下來等待'b'和'c'來在事件發生之前來。

這意味着您必須讓按鍵處理程序跟蹤以前的按鍵,並且只有在按下適當的按鍵時才移動到下一個階段。

例如用戶輸入'c'然後'v' - 好,那是一個很好的序列。但是如果他們接下來輸入'#',那麼你清空累加器,因爲cv#沒有任何意義。如果他們輸入'l'作爲第三個字符,那麼你可以彈出一個提示輸入記錄ID,等等......