2011-03-08 67 views
2

我正在創建一個包含問題(類似情況的謎題)的html頁面。這個問題的答案是「Windows 7」。但是,我希望用戶只有按了windows key followed by 7才能解決問題。我想爲此創建一個JavaScript函數。我可以通過獲取擊鍵的ASCII值來捕獲單個按鍵。但是當我試圖聯合起來做它不工作。如何去解決這個..任何想法..在javascript中檢測組合鍵擊

回答

5

http://jsfiddle.net/loktar/MsNPW/5/

var keys = []; 

document.onkeydown = function(evt){  
    var key = evt.keyCode; 
    keys[key] = true; 
    if(keys[91] && keys[55]){ 
     console.log("win7"); 
    } 
} 

document.onkeyup = function(evt){  
    var key = evt.keyCode; 
    keys[key] = false; 
} 
+0

謝謝你@Loktar ..它工作:) – CHID 2011-03-08 17:25:55

+0

有一個錯誤,我似乎無法修復...如果你一次正確回答它,下一次你回答一些事情,你會得到一個「正確」的迴應即使它是錯誤的 – mrmo123 2012-03-14 18:42:26

+0

@ mrmo123嗯可以試試這個,http://jsfiddle.net/loktar/MsNPW/4/ **修復**警報阻止了正在運行的按鍵。編輯答案。 – Loktar 2012-03-14 18:49:33

1

你可以檢測到keydown和keyup事件,並保存已被按下的鍵列表。將密鑰添加到keydown的列表中,並從keyup列表中刪除它們。從那裏你可以在適當的時候查看列表(例如在keydown事件結束時)。

請記住,每個按鍵是它自己的獨特事件。被推送的多個鍵並不是天然相關的,所以你需要自己創建這個列表。

我建議你使用像jQuery這樣的庫,並且可能有插件可以提供幫助。也就是說,我所描述的一般概念不應太難實施。讓我知道僞代碼是否有助於澄清我描述的算法。

+0

哇,那是一個很好的主意。謝謝你 – CHID 2011-03-08 17:15:54