2009-02-03 3 views
2

jQuery의 키 누르기 이벤트를 사용하여 일부 전역 키보드 처리를 정의했습니다.입력 필드에 대한 키보드 이벤트를 표시하지 않음

입력을 방해하지 않도록 입력/텍스트 영역에 대한 필드를 이러한 이벤트를 억제 할 수있는 방법이 있습니까?
필자는 요소 선택기를 기반으로하는 조건으로 몇 가지 해킹을 사용했지만 모든 키 누르기에서 해고 될 때 성능에 큰 영향을 미쳤습니다.

(이러한 필드 중 일부는 내 통제 할 수없는, 이는 동적으로 생성됩니다 - 아마도 그 관련입니다.)

+0

[내 등록 계정에 연결] – AnC

답변

3

은 키보드 이벤트가 무시되는 것을 나타내는 일부 글로벌 변수를 설정 모든 입력 및 텍스트 영역에 대한 onfocus 및 핸들러를 만듭니다. 글로벌 변수를 재설정하기 위해 blur 이벤트에 대한 다른 핸들러를 작성하십시오.

var DISABLE_KEY_HANDLERS = false; 

$('input[type=text], input[type=password], textarea').focus(function(){ 
    DISABLE_KEY_HANDLERS = true 
}) 

$('input[type=text], input[type=password], textarea').blur(function(){ 
    DISABLE_KEY_HANDLERS = false 
}) 

키 처리기에서는 값이 true인지 아닌지 확인하고 참인 경우 반환해야합니다.

+0

고마워요! 그러나 문제는 동적으로 생성 된 요소입니다. 나는 새로운 입력 필드가 생성 될 때마다 위의 코드를 다시 실행해야하는데, 이는 내 통제 범위를 벗어난다. 그럼에도 불구하고 이것은 도움이되며 동적 부품에 대한 해결책을 찾을 수 있습니다 ... –

+0

라이브 쿼리 플러그 인을 살펴보아야합니다. http://plugins.jquery.com/project/livequery/ – Zach

+0

유망 해 보입니다 - 많은 경우 감사! –

1

이벤트는 이미 필요한 모든 것을 제공합니다. ev.target이 활성 DOM 요소이므로 입력 필드인지 여부를 확인할 수 있습니다.

관련 문제