2011-02-18 34 views
0

我正在使用最新版本的JQuery hotkeysJQuery Hotkeys - 綁定到多個字母數字字符組合

該插件非常棒,主要完成我所需要的功能。

不過,我想結合鍵,如「A + H」的組合,例如:

jQuery(document).bind('keydown', 'a+h', function(evt) { alert('hello world!'); } 

這似乎並不工作 - 有沒有人來達到的這一成功地? CTRL + A等等,但如果我可以綁定到字母數字字符的組合,這將是理想的。

+0

(在未來,當你問一個問題,並得到一個答案這是有用的,你應該點擊「接受答案」按鈕!) – slifty 2011-02-23 18:36:53

+0

我認爲你正在尋找的將被稱爲'按鍵序列'。如果你真的喜歡它,這是我想過加入到這個圖書館,一個la mousetrap.js – robbie613 2014-02-13 12:38:57

回答

3

我看了一下代碼庫,它看起來像插件的編程方式,它不會支持你描述的用例。它將修改鍵(移位,alt等)作爲特殊情況結​​合在一起,這允許您創建涉及mod鍵的組合。但是,它不支持多個標準密鑰。

我建議你讓插件開發者在未來的版本中添加這個特性。同時,您可以調整自己的目標以適應此插件,嘗試自己修改插件,或者爲這種特殊情況編寫自定義代碼。

順便說一下,代碼不是特別複雜,所以你應該一定要採取甘德。也許你會看到我沒有的東西。
The plugin file

2

我不認爲這將有可能檢測到兩個鍵,因爲按任何鍵只會觸發一個事件。 Shift,Alt,Ctrl和其他元鍵是一種特殊情況。

解決辦法之一是保存最後一個按鍵,然後等待下一個按鍵。我做了下面的代碼的demo

var timer, last; 
$(document).bind('keydown', function(e) { 
    // Typing a then h will call the alert 
    if (last == 65 && e.which === 72) { 
     alert('Hello World'); 
    } 
    last = e.which; 
    // clear last value after 100 ms 
    clearTimeout(timer); 
    timer = setTimeout(function(){ 
     last = ''; 
    }, 100); 
}); 

通知後100毫秒,因爲沒有它的最後一個鍵被清除,您可以按「A」,然後等待像10秒,然後按「H」來獲得警報。現在組合必須幾乎一起按下(但「a」必須在「h」之前) - 稍作修改也將允許用戶先按「h」然後按「a」。

0

這不正是你的要求,但這個工程的一則h,而不是A + H(這是awkard做你的鍵盤上)

$(document).bind('keyup', 'a', function(){ 
    $(document).bind('keyup', 'h', function(){ 
     // do you shizzle 
    }); 
});