Programing

jQuery의 'keypress'는 Chrome의 일부 키에서 작동하지 않습니다.

lottogame 2020. 11. 27. 07:39
반응형

jQuery의 'keypress'는 Chrome의 일부 키에서 작동하지 않습니다. 해결 방법?


사용자가을 누를 때 div를 제거하는 키 누르기 기능을 구현하려고합니다 Esc. 이것은 다음 코드를 사용하여 Firefox 및 IE에서 작동합니다.

$("body").keypress(function(e) {
    alert("any key pressed");
    if (e.keyCode == 27) {
        alert("escape pressed");
    }
});

아무 키나 누르면 첫 번째 키 alert가 표시되고 Escape 키를 누르면 두 번째 키 alert도 표시됩니다.

그래도 Chrome에서는 작동하지 않습니다. 첫 번째 alert는 문자 키를 누르면 항상 표시되지만 Escape, Tab, Space 또는 숫자 중 하나를 누르면 표시되지 않습니다.

왜 그럴까요? Chrome이 이러한 키 누름에 응답하도록 할 수있는 방법이 있나요?


keydown대신 처리해보십시오 .


keydown을 사용하십시오 . 키 누르기는 Chrome의 ESC에서 작동하지 않습니다 (다른 브라우저에 대해서는 확실하지 않음).

$(newTag).keydown(function(e) {  //keypress did not work with ESC;
    if (event.which == '13') {
      ProfilePage.saveNewTag(search_id, $(newTag).val());
    }
    else if (window.event.which){
      $(newTag).remove();
    }
}); 

ESC 키의 경우 :

$(document).keydown(function(e) {
  if(e.keyCode == 27) { /* Run code */ }
}

'L'과 같은 문자 키의 경우 :

$(document).keypress(function(e) {
  if(e.which == 108) { }
});

Chrome과 Firefox에서 모두 작동


두 번째 경고 후 추가

e.preventDefault();

이렇게하면 이벤트의 기본 동작이 트리거되지 않습니다.

이 방법에 대한 자세한 정보는 여기

코드는 다음과 같아야합니다.

$("body").keypress(function(e) {
    alert("any key pressed");
    if (e.keyCode == 27) {
         alert("escape pressed");
         e.preventDefault();
}});

'ESC'키 누르기

e.which: 0
e.keyCode: 27

키업 'ESC'

e.which: 27
e.keyCode: 27

인쇄 할 수없는 문자의 경우 keyup.


Jquery.hotkey js 파일을 사용하여 Sortcut 키를 만들 수 있습니다.

$(document).bind('keydown', 'esc', function(){ });

참고 URL : https://stackoverflow.com/questions/3901063/jquerys-keypress-doesnt-work-for-some-keys-in-chrome-how-to-work-around

반응형