jQuery로 "삭제"키 누르기 캡처


118

키 누르기 이벤트 핸들러에 대한 jQuery 문서의 예제 코드를 사용할 때 키를 캡처 할 수 없습니다 Delete. 아래 스 니펫 은 FireFox에서 키를 눌렀을 0때 기록 됩니다 Delete.

$(document).keypress(function(e) {
    console.log(e.which);       
});

Delete키 를 캡처 할 수있는 방법이있는 것 같지만 모호한 용어이므로 Google이 그다지 도움이되지 않는다는 것을 증명하지 않습니다.

답변:


202

keypress이벤트를 사용해서는 안되지만 이벤트가 실제 (인쇄 가능한) 문자를위한 것이므로 keyup또는 keydown이벤트를 사용하면 안됩니다 keypress. keydown이 같은 모든 인쇄되지 않는 키를 캡처 할 수 있도록 낮은 수준에서 처리 delete하고 enter.


keyup일을 더 잘 할 것입니다.
localhoost

2
@atilkan없이, 사용자에 대한 피드백을 기대 keydown하지 keyup. 모든 텍스트 편집기는 키를 놓을 때가 아니라 키를 누를 때 작업을 수행합니다.
Philippe Leybaert 2017-06-16

1
@PhilippeLeybaert 내 경우 프로그램은 마지막으로 누른 문자를 잡을 수 없습니다.
localhoost


34

자바 스크립트 키 코드

  • e.keyCode == 8 forbackspace
  • e.keyCode == 46 for forward backspaceor deletebutton in PC 's

이 세부 사항을 제외하고 Colin & Tod의 답변이 작동합니다.


4
그것은해야 e.keyCode 하지 e.KeyCode
제롬

16

event.key === "삭제"

더 최근에 더 깔끔하게 : event.key. 더 이상 임의의 숫자 코드가 없습니다!

참고 : 이전 속성 ( .keyCode.which)은 더 이상 사용되지 않습니다.

document.addEventListener('keydown', function(event) {
    const key = event.key; // const {key} = event; ES6+
    if (key === "Delete") {
        // Do things
    }
});

Mozilla 문서

지원되는 브라우저

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.