2011-02-08 7 views
26

jQuery keyup, keydown 또는 keypress 메서드가 나타나지 않습니다. 백 스페이스 키를 누를 때 발생합니다. 어떻게 백 스페이스 키를 눌러야합니까?jQuery를 사용하여 백 스페이스 키를 트랩하는 방법은 무엇입니까?

+0

명확히하기 위해 백 스페이스 키를 눌렀을 때 트랩하여 조치를 취하고 싶습니다. 마지막 문자가 텍스트 상자에서 제거되면 페이지의 일부 단추의 활성화 된 상태가 변경됩니다. 따라서 백 스페이스 키가 정상적으로 작동하기를 원합니다. – ChrisP

+1

그건 사실이 아니야. keyup 및 keydown 메소드에 나타납니다. 키 누르기에만 표시됩니다. – Line

+0

@RickSmith 동의하지 않습니다. 당신이 말하는 질문은 자바 스크립트에서였습니다. 여기에있는 OP는 jQuery에서 묻습니다. 누군가가 한 가지 방법 또는 다른 방법으로 대답을 원하는 이유가있을 수 있습니다. –

답변

61

이 하나를 시도해보십시오. 백스 페이스는 입력 요소에서 잘 작동해야하지만 초점이 단락 또는 다른 것이면 작동하지 않아야합니다. 페이지가 기록의 이전 페이지로 돌아가는 경향이 있기 때문입니다.

$('html').on('keydown' , function(event) { 

     if(! $(event.target).is('input')) { 
      console.log(event.which); 
      //event.preventDefault(); 
      if(event.which == 8) { 
      // alert('backspace pressed'); 
      return false; 
     } 
     } 
}); 

반환 값 false => event.preventDefault와 event.stopPropagation이 모두 적용됩니다.

+16

도 확인하십시오. 46 (삭제) – andufo

+0

작동하지만 모달 창을 표시하고 이전 페이지로 돌아갈 수는 없습니다. –

+1

e.preventDefault()를 시도한 다음 iffy를 확인하십시오. –

10

일반 자바 스크립트를 사용하여 백 스페이스 키를 트랩 할 수 있습니다. event.keyCode 메소드를 사용할 수 있습니다. 키 코드는 8, 그래서 코드는 다음과 같이 보일 것이다 : 당신은 모두 [삭제]를 위해 (46)를 확인하려면 (8) 키를 사용하는 [백 스페이스]뿐만 아니라 다음을

if (event.keyCode == 8) { 
    // Do stuff... 
} 

을 : 위와 같은 생각에서 작업

$('html').keyup(function(e){if(e.keyCode == 8)alert('backspace trapped')}) 
3

을하지만, 조금 일반화 :

if (event.keyCode == 8 || event.keyCode == 46) { 
    // Do stuff... 
} 
+0

키 업 대신 키 다운을위한 upvote. –

3

대부분의 브라우저에서 백 스페이스의 기본 동작은 이전 페이지로 돌아가는 것입니다. 이 아니라면이 필요합니다. preventDefault()을 호출해야합니다. 그러나 OP에서 언급했듯이, 항상 당신이 그것을 preventDefault()이라고 부르는 경우 텍스트 필드의 내용을 삭제할 수 없게됩니다. 아래 코드는 this answer에 적합한 솔루션을 제공합니다.

하드 코딩 된 keyCode 값을 사용하는 대신 (브라우저에 따라 일부 값이 변경되지만 Backspace 또는 Delete에 해당하지 않는 것으로 나타남) jQuery has keyCode constants이 이미 정의되어 있습니다. 이렇게하면 코드를보다 쉽게 ​​읽을 수 있고 모든 keyCode 불일치를 처리 할 수 ​​있습니다.

+0

이것은 대부분의 경우를 처리하지만 radio 나 checkbox와 같은 특정 입력 유형에서 Select를 다시 방지하기 위해'SELECT'를 제거하고'e.target.type'에 대한 테스트를 추가했습니다. 지금까지이 입력 유형은'var rxt =/radio | button | checkbox | image | reset | submit/i; '를 가지고 있습니다. 색상도 제외시킬 수 있지만 브라우저마다 다를 수 있습니다. – peater

관련 문제