У меня есть функция заполнения формы в JavaScript, которая позволяет мне просто вводить числа в текстовое поле.
Проблема в том, что он работает только на компьютерах, а не на мобильных устройствах.
function validarNumero(e) {
tecla = (document.all) ? e.keyCode : e.which;
if (tecla==8) return true;
patron =/[0-9]/;
te = String.fromCharCode(tecla);
return patron.test(te);
}
И в части кода HTML
<input type="text" id="txtNumero" maxlength="10" onkeypress="return validarNumero(event)">
Если вы не можете использовать HTML5 и CSS3 , то, возможно, наиболее переносимым является захват событий
keyup
иchange
удаление чисел из поля формы следующим образом:Причина в сложности нажатий клавиш, которые вы должны фильтровать, чтобы поддерживать совместимость со всем (мобильные устройства, копирование/вставка, наведение курсора, выделение части текста и т. д.).
Более подробную информацию о кодах клавиатуры вы можете найти в документации .
Лично я бы оставил гибридную версию, которая могла бы использовать возможности HTML5, если они присутствуют.
Я сохраняю версию HTML5 + CSS3 в истории изменений.
Вы должны использовать
number
тип ввода, если вам не нужно поддерживать устройства старше тех, которые перечислены в таблице caniuse .ОБНОВИТЬ
Поскольку вы не можете использовать HTML5, вы можете попробовать эту функцию:
Я предлагаю 2 решения.
Использовать:
При этом вы получаете цифровую клавиатуру, чтобы появиться на мобильном телефоне. В этом есть плюсы и минусы.
С одной стороны, вы сохраняете проверки и у вас есть более защищенный ввод данных. С другой стороны, вы не можете поставить ноль перед «0898», например, это уберет 0. Это проблема, если это почтовые индексы, номера телефонов и т. д.
Другое решение заключается в использовании:
Это проверка HTML5 и работает так же, как и required , minlength , maxlength и т. д.
Приведенный выше пример подтверждает, что это строка от 7 до 15 цифр, где могут быть только символы от 0 до 9 (для меня это очень хорошо работает для первой проверки телефона)
Это всего лишь пример, вы можете использовать любое регулярное выражение, которое вам подходит.
Я не знаю, как улучшить ваш код javascript, но вы можете оставить этот параметр для рабочего стола и использовать один из этих вариантов для мобильных устройств.