У меня есть мобильный веб-сайт, на котором есть некоторые HTML- input
элементы, например:
<input type="text" name="txtAccessoryCost" size="6" />
Я встроил сайт в приложение WebView
для возможного использования Android 2.1, так что он также будет приложением для Android.
Можно ли получить клавиатуру с цифрами вместо клавиатуры по умолчанию с буквами, когда этот input
элемент HTML находится в фокусе?
Или можно ли установить его для всего приложения (может быть, что-то в файле манифеста ), если это невозможно для элемента HTML?
inputmode="number"
Атрибут кажется, правильный ответ в конце 2019 года: developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/... . Ответ, получивший наибольшее количество голосов на момент публикации этого комментария, предполагаетtype="number"
, что в нем есть свои подводные камни;inputmode
похоже, влияет только на отображение виртуальной клавиатуры, а не на поведение / ограничения самого ввода.Ответы:
<input type="number" /> <input type="tel" />
Оба они представляют собой цифровую клавиатуру, когда ввод получает фокус.
<input type="search" />
показывает обычную клавиатуру с дополнительной кнопкой поискаВсе остальное вроде бы вызывает стандартную клавиатуру.
источник
input
type
s в спецификации HTML , включаяnumber
иtel
.type="tel"
хуже набирает числа, чем клавиатура дляtype="number"
.<input type="text" pattern="\d*" />
также отображает цифровую клавиатуру, но только на iOS, а не на Android .ВАЖНАЯ ЗАМЕТКА
Я публикую это как ответ, а не комментарий, так как это довольно важная информация, и она привлечет больше внимания в этом формате.
Как указывали другие товарищи, вы можете заставить устройство показывать цифровую клавиатуру с помощью
type="number"
/type="tel"
, но я должен подчеркнуть, что с этим нужно быть предельно осторожным.Если кто-то ожидает, что число начинается с нулей, например
000222
, тогда у него могут возникнуть проблемы, так как некоторые браузеры (например, настольный Chrome) отправят на сервер222
, а это не то, что он хочет.По поводу
type="tel"
ничего подобного сказать не могу, но лично не использую, так как его поведение на разных телефонах может отличаться. Я ограничился простым,pattern="[0-9]*"
что не работает в Androidисточник
type="tel"
. В спецификации отмечается, чтоtel
не применяется какой-либо конкретный синтаксис, в отличие отnumber
которого требуется, чтобы его значение было допустимым числом с плавающей запятой .Это должно сработать. Но у меня такие же проблемы с телефоном Android.
<input type="number" /> <input type="tel" />
Я обнаружил, что если бы я не включил jquerymobile-framework, клавиатура показывала правильные два типа полей.
Но я не нашел решения этой проблемы, если вам действительно нужно использовать jquerymobile.ОБНОВЛЕНИЕ: я обнаружил, что если тег формы хранится вне
<div data-role="page">
Цифровая клавиатура не отображается. Это должно быть ошибка ...
источник
inputmode
согласно спецификации WHATWG - это метод по умолчанию.Для устройств iOS
pattern
также может помочь добавление .Также для обратной совместимости,
type
поскольку Chrome использует их начиная с версии 66.<input inputmode="numeric" pattern="[0-9]*" type="number" />
источник
decimal
и нашел здесь developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/…Некоторые браузеры отправляют серверу начальный ноль, когда тип ввода - "число". Поэтому я использую смесь jquery и html для загрузки цифровой клавиатуры, а также проверяю, что значение отправляется как текст, а не как число:
$(document).ready(function(){ $(".numberonly").focus(function(){$(this).attr("type","number")}); $(".numberonly").blur(function(){$(this).attr("type","text")}); })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" class="numberonly">
источник
type="digits"
возможность, чтобы у нас не было этих хаков. Я имею в виду, это не похоже на то, что число с нулевым начальным числом является таким редким (почтовые индексы в США являются очевидным примером).input type = number
Если вы хотите ввести числовой ввод, вы можете использовать значение атрибута HTML5 input type = "number".
<input type="number" name="n" />
Вот клавиатура, которая есть на iPhone 4:
iPhone Скриншот номера типа ввода HTML5 Android 2.2 использует эту клавиатуру для type = number:
Скриншот Android с номером типа ввода HTML5
источник
Добавьте атрибут шага к числовому вводу
<input type="number" step="0.01">
Источник: http://blog.pamelafox.org/2012/05/triggering-numeric-keyboards-with-html5.html
источник