2012-05-31 5 views
5

사용자가 특정 키 구문을 입력 할 때 작업을 수행하기 위해 jQuery 플러그인을 개발하려고합니다.키 누르기와 키 결합 - jQuery

예를 들어 키 입력시 'HELLO'와 (과) 일치시켜야합니다.

var controllerKey = []; 
$(window).keyup(function(evt) { 
    var code = evt.keyCode ? evt.keyCode : evt.which; 
    controllerKey.push(code); 
} 
[...] 

그런 다음, 나는 나의 문자열 "HELLO"(str.charCodeAt 덕분에())과 일부 다른 것들과 내 controllerKey 비교하지만 여기서 중요하지 않습니다. 이 시점에서 모든 것이 잘 작동합니다. 내가 (문자열 일부 대문자을했을 때 사실)에 "Hello"를 일치시킬 때

내 문제 발생합니다. 나는 포럼에서 keyup이나 keydown이 아무런 효과가 없다는 것을 알았다.

그래서 나는 그것을 잘 관리하는 keypress를 사용하지만 keypress는 (크롬에서) 화살표 키와 일치하도록 허용하지 않습니다.

(키 누르기가 이벤트와 일치하지 않는 경우에만) 키 누르기와 키 조합을 결합 할 수 있는지 알고 싶습니다.

미리 감사드립니다.

+0

입력 내용에이 구문을 입력합니까? 또한 다른 문제의 문자열을 비교하는 문제를 언급 한 다음 키 누르기와 키 업을 묻는 중입니까? – lucuma

+0

아니요. "konami code"처럼 보이지만 원하는 비밀번호를 사용하는 플러그인입니다. 나는 첫 번째 문자열 (key-phrase)을 사용자 입력과 비교하고있다. –

+0

나는 konomi 코드가 무엇인지 알기에는 너무 늙었다 고 생각한다. 그러나 두 이벤트를 결합하는 것에 대한 대답을 제공했다. – lucuma

답변

9

이처럼 그들을 결합 할 수 있습니다 :

$(window).on('keyup keypress', function(e) { 
    if (e.type=="keyup") { 

    } else { 
     // it is keypress 
    } 
}); 
+0

결과적으로 s.toUpperCase() == t.toUpperCase()에 의해 문자열을 쉽게 비교할 수 있습니다. – lucuma

+0

답이 도움이 될 것입니다. 감사. (이 정보를 유지하기 위해 comparaison에 대해 upperCase를 사용하고 싶지 않습니다.) –

+0

IE에서 작동하지 않는 이유는 무엇입니까? – RMiranda

2

당신은 민감한 비교 크로스 브라우저 케이스를하기 위해 숨겨진 입력키 이벤트를 사용할 수 있습니다.