2010-01-22 3 views
1

사용자가 1 초 내에 동일한 문자를 키보드에서 두 번 누르는 경우를 감지하는 간단한 방법이 있는지 궁금해했습니다. 나는 일종의 코드를 작성했지만 신뢰할 수는 없다.두 번째 키 누르기에서의 자바 스크립트

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

작품! –

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; 
    } 
}; 
관련 문제