programing

jQuery: Backspace 키를 누르면 실행되지 않습니까?

oldcodes 2023. 7. 28. 22:35
반응형

jQuery: Backspace 키를 누르면 실행되지 않습니까?

제가 뭘 잘못하고 있는지 궁금합니다.

$(".s").keypress(function(e) {
   switch (e.keyCode) {
      case 8: // Backspace
      //console.log('backspace');
      case 9: // Tab
      case 13: // Enter
      case 37: // Left
      case 38: // Up
      case 39: // Right
      case 40: // Down
         break;

      default:
         doSearch();
   }
});

나는 나의doSearch()내가 키를 눌렀을 때 또한 발사되는 기능.현재로서는 크롬과 사파리를 눌러도 아무 일도 일어나지 않습니다.

무슨 생각이 있습니까?

사용하다keyup대신에keypress이것은 사용자가 무언가를 누를 때 모든 키 코드를 가져옵니다.

저는 이것을 직접 발견했습니다.사용한.on조금 다르게 생겼지만 이렇게 했습니다.

 $('#element').on('keypress', function() {
   //code to be executed
 }).on('keydown', function(e) {
   if (e.keyCode==8)
     $('element').trigger('keypress');
 });

여기에 내 작업을 추가하는 중입니다.사용자가 입력한 SSN을 삭제해야 하므로 jQuery에서 이 작업을 수행했습니다.

  $(this).bind("keydown", function (event) {
        // Allow: backspace, delete
        if (event.keyCode == 46 || event.keyCode == 8) 
        {
            var tempField = $(this).attr('name');
            var hiddenID = tempField.substr(tempField.indexOf('_') + 1);
            $('#' + hiddenID).val('');
            $(this).val('')
            return;
        }  // Allow: tab, escape, and enter
        else if (event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
        // Allow: Ctrl+A
        (event.keyCode == 65 && event.ctrlKey === true) ||
        // Allow: home, end, left, right
        (event.keyCode >= 35 && event.keyCode <= 39)) {
            // let it happen, don't do anything
            return;
        }
        else 
        {
            // Ensure that it is a number and stop the keypress
            if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) &&       (event.keyCode < 96 || event.keyCode > 105)) 
            {
                event.preventDefault();
            }
        }
    });

입력이 변경된 경우에만 이벤트를 발생시키려면 다음을 사용합니다.

$('.s').bind('input', function(){
  console.log("search!");
  doSearch();
});

.keypress()에 대한 jQuery 문서에 따르면, 출력할 수 없는 문자를 감지하지 않으므로 백스페이스는 키 누르기에서 작동하지 않지만 키다운 및 키업에서 잡힙니다.

키 누르기 이벤트는 브라우저가 키보드 입력을 등록할 때 요소로 전송됩니다.이는 Shift, Esc 및 delete 트리거 키다운 이벤트와 같은 한정자 및 비인쇄 키가 키다운 이벤트와 비슷하지만 키프레스 이벤트는 그렇지 않다는 점을 제외하고는 키다운 이벤트와 유사합니다.플랫폼과 브라우저에 따라 두 이벤트 간의 다른 차이점이 발생할 수 있습니다.(https://api.jquery.com/keypress/)

경우에 따라 키업이 원하지 않거나 다른 바람직하지 않은 효과가 있으며 키다운으로도 충분하므로 이를 처리하는 한 가지 방법은 다음과 같습니다.keydown모든 키 입력을 캡처하려면 키를 입력하도록 짧은 간격의 시간 제한을 설정한 다음 처리를 수행합니다.

jQuery(el).keydown( function() { 
    var that = this; setTimeout( function(){ 
           /** Code that processes backspace, etc. **/ 
     }, 100 );  
 } );

언급URL : https://stackoverflow.com/questions/4690330/jquery-keypress-backspace-wont-fire

반응형