Событие keyPress не срабатывает в Android-мобиле

Я использую backbone,marionette для моего приложения. Я использовал тот же код для desktop and mobile, но keypress не работал в mobile. Я сделал Jsfiddle для тестирования.

Если вы откроете эту ссылку в mobile событии, которое не будет запущено, если вы откроете в desktop его запуск. Как я могу это решить.

может кто-нибудь мне помочь.

Спасибо.

Ответ 1

Chrome mobile не поддерживает корректные события нажатия клавиш. Для этого есть давняя ошибка:

https://code.google.com/p/chromium/issues/detail?id=118639

Я считаю, что он должен быть исправлен в версии v38.

Ответ 2

Я предлагаю два события в поле ввода.

Это будет работать на веб-браузере на рабочем столе.

1) onkeypress = return isNumberKey(event);

function isNumberKey(e)
{
    var evt = e || window.event;

    if(evt) 
    { 
        var charCode = evt.keyCode || evt.which; 
    }
    else 
    { 
        return true; 
    }

    if((charCode > 47 &&  charCode < 58) || charCode == 9 || charCode == 8 || charCode ==46 || charCode ==37 || charCode==39)
    { 
        return true; 
    }

    return false;
}

Это будет работать для мобильных устройств

2) onkeyup="numberMobile(event);"

function numberMobile(e){
    e.target.value = e.target.value.replace(/[^\d]/g,'');
    return false;
}

Примените оба события в поле ввода, и оно будет работать. Единственным недостатком является то, что он делает его медленным. Но пока нам нужно жить с ним.

Есть одна проблема с этим решением. Навигация по левому краю не работает. Я скоро обновлю соответствующее решение.

Ответ 3

Протестировано в браузере. Кажется, работает со мной. Здесь ссылка на ваш смысл:

http://www.browserstack.com/start#os=android&os_version=4.1&device=Samsung+Galaxy+S+III&zoom_to_fit=true&full_screen=true&url=http%3A%2F%2Fjsfiddle.net%2F33Snz%2F3%2Fembedded%2Fresult%2F&speed=1&start=true

Можете ли вы сообщить, какое конкретное устройство andriod и браузер вы тестируете.

Ответ 4

Наконец, я нашел проблему, но она не будет работать в opera.In вместо написания кода для числовых полей. Я просто добавил атрибут type = 'number' для ввода поля в html файле. Теперь приближается только числовая клавиатура. И это удовлетворяет моим требованиям. Вот JsFiddle

html-код:

<input type='number'/>

Ответ 5

Похоже, что keypress событие является устаревшим (см https://developer.mozilla.org/en-US/docs/Web/Events/keypress), и лучше использовать keydown события в настоящее время, прежде чем все падения браузера поддержка на нем.