Ответ 1
Chrome mobile не поддерживает корректные события нажатия клавиш. Для этого есть давняя ошибка:
https://code.google.com/p/chromium/issues/detail?id=118639
Я считаю, что он должен быть исправлен в версии v38.
Я использую backbone,marionette
для моего приложения. Я использовал тот же код для desktop and mobile
, но keypress
не работал в mobile
. Я сделал Jsfiddle для тестирования.
Если вы откроете эту ссылку в mobile
событии, которое не будет запущено, если вы откроете в desktop
его запуск. Как я могу это решить.
может кто-нибудь мне помочь.
Спасибо.
Chrome mobile не поддерживает корректные события нажатия клавиш. Для этого есть давняя ошибка:
https://code.google.com/p/chromium/issues/detail?id=118639
Я считаю, что он должен быть исправлен в версии v38.
Я предлагаю два события в поле ввода.
Это будет работать на веб-браузере на рабочем столе.
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;
}
Примените оба события в поле ввода, и оно будет работать. Единственным недостатком является то, что он делает его медленным. Но пока нам нужно жить с ним.
Есть одна проблема с этим решением. Навигация по левому краю не работает. Я скоро обновлю соответствующее решение.
Протестировано в браузере. Кажется, работает со мной. Здесь ссылка на ваш смысл:
Можете ли вы сообщить, какое конкретное устройство andriod и браузер вы тестируете.
Наконец, я нашел проблему, но она не будет работать в opera.In вместо написания кода для числовых полей. Я просто добавил атрибут type = 'number' для ввода поля в html файле. Теперь приближается только числовая клавиатура. И это удовлетворяет моим требованиям. Вот JsFiddle
html-код:
<input type='number'/>
Похоже, что keypress
событие является устаревшим (см https://developer.mozilla.org/en-US/docs/Web/Events/keypress), и лучше использовать keydown
события в настоящее время, прежде чем все падения браузера поддержка на нем.