2010-01-22 47 views
1

我一直在想知道是否有一種簡單的方法來檢測用戶是否在一秒內按下鍵盤上的同一個字符兩次。我寫了一些這樣的代碼,但它不可靠。第二個按鍵上的Javascript

var escapeCount = 0; 

function reset() { 
    escapeCount = 0; 
    setTimeout('reset();', 1000); 
} 

window.onload = function() { 
    reset(); 
}; 

document.onkeyup = function(e) { 
    if (!e) var e = window.event; 
    var code = e.keyCode ? e.keyCode : e.which; 
    if (code == 27) escapeCount +=1; 
    if (escapeCount == 2) { 
    // stuff on second escape 
    } 
}; 

有沒有更好的方法來做到這一點?謝謝

回答

5

自從最後一個字符被按下1秒後重新設置是有意義的。例如:

var lastChar = -1; 

document.onkeyup = function(e) { 
    if (!e) var e = window.event; 
    var code = e.keyCode ? e.keyCode : e.which; 

    if (lastChar == code) { 
    // Same key was pressed twice in a row within 1 second. 
    } else { 
    lastChar = code; 
    setTimeout(function() {lastChar = -1;}, 1000); 
    } 
}; 
+0

的作品就像一個夢! – 2010-01-22 01:39:22

0

你復位定時器每一秒,讓你不僅必須按最後一個逃生的一秒鐘內再次逃脫,但也必須有沒有超時的印刷機之間。

它可能更容易忘記超時和只記得最後一次按鍵的時間,而不是:

var lastescapetime= null; 

document.onkeyup= function(event) { 
    if (event===undefined) event= window.event; 
    if (event.keyCode===27) { 
     var now= new Date().getTime(); 
     if (lastescapetime!==null && now<lastescapetime+1000) { 
      alert('You double-escaped!'); 
      lastescapetime= null; 
     } else { 
      lastescapetime= now; 
     } 
    } else { 
     lastescapetime= null; 
    } 
}; 
相關問題