Событие keypress в JavaScript не отображается в браузере Android

Я создал простой код для обработки события keypress:

var counter = 0;        
$('input').on('keypress', function () {
    $('div').text('key pressed ' + ++counter);
});

JSFiddle.

Но обработчик событий нажатия клавиш не отображается в мобильном браузере (Android 4+, WindowsPhone 7.5+). В чем может быть проблема?

Ответы

Ответ 1

Попробуйте keyup поможет вам

var counter = 0;        
$('input').on('keyup', function () {
    $('div').text('key up ' + ++counter);
});

Ответ 2

Я считаю, что keypress устарел. Вы можете проверить параметр уровня 3 уровня. Использование keydown или keyup должно работать. Спецификация также рекомендует использовать beforeinput вместо keypress, но я не уверен, какая поддержка это.

Ответ 3

$(document).ready(function() {
  var pattForZip = /[0-9]/;
  $('#id').on('keypress input', function(event) {
    if(event.type == "keypress") {
      if(pattForZip.test(event.key)) {
        return true;
      }
      return false;
    }
    if(event.type == 'input') {
      var bufferValue = $(this).val().replace(/\D/g,'');
      $(this).val(bufferValue);
    }
  })
})

Ответ 4

Да, некоторые браузеры Android не поддерживают событие нажатия клавиши, нам нужно использовать только keydown или keyup, но получат разные коды клавиш, чтобы избежать использования разных кодов клавиш, используйте следующую функцию, чтобы получить код ключа, отправив значение char.

Например:

function getKeyCode(str) {
  return str && str.charCodeAt(0);    
}
function keyUp(){
 var keyCode = getKeyCode("1"); 
}

Ответ 5

Использовать событие ввода jQuery, например:

$( 'input' ).on( 'input', function() {
    ...
} );

С этим вы не можете использовать e.which для определения того, какой ключ был нажат, но я нашел приятное обходное решение здесь: http://jsfiddle.net/zminic/8Lmay/

Ответ 6

Я думаю, что плохая идея использовать другие события вместо "keypress". Что вам нужно сделать, так это просто включить в проект файл jQuery. Вам может помочь файл с именем jQuery.mobile.js или совсем аналогичный (например, jQuery.ui.js) любой версии.

Вы можете скачать его из: https://jquerymobile.com/download/