2012年12月2日 星期日

判斷按鍵按下去順序(jQuery)


以下範例為判斷,是否依序按了某些按鍵,如果是的話,就執行 alert("OK")

如果想知道某按鍵實際對應的 code 可以自己按看看,用 e.which 取得,
或是到 http://www.w3.org/2002/09/tests/keys-cancel2.html 實際測試查詢,
下例使用"左(37)"、"上(38)"、"右(39)"這三個按鍵
$(function(){
    var keys_timeout = 1000;//兩次按按鍵的間隔時間,須在多少時間(毫秒)內按,此例為1秒
    var keys = [37,38,39];//依序按下去的按鍵code,此例為方向鍵的"左"、"上"、"右"
    var keys_tmp = []; 
    var keys_init = function(){
        keys_tmp = [];
    }
    var timeid_keys;
    $(document).keydown(function (e) {
        clearTimeout(timeid_keys);
        var v = keys[keys_tmp.length];
        if(v==e.which){
            keys_tmp.push(v);
        }else{
            keys_init();
        }

        if(keys.length==keys_tmp.length){
            //依序按了"左"、"上"、"右"後,要執行的程式 - 開始
            alert("OK");
            //依序按了"左"、"上"、"右"後,要執行的程式 - 結束
            keys_init();
        }else{
            timeid_keys=self.setTimeout(keys_init,keys_timeout);
        }
    });
});

沒有留言:

張貼留言