Поле ввода HTML: автоматически отображать числовой метод ввода - PullRequest
5 голосов
/ 14 августа 2011

У меня есть веб-приложение с макетом, настроенным для работы с мобильными устройствами. Тем не менее, большинство моих полей ввода в формах являются числовыми.

Каждый раз, когда я получаю доступ к форме на своем телефоне Android и щелкаю в одном из полей ввода, чтобы создать поле ввода, появляется qwerty, и мне приходится переключаться на числовой метод ввода и вводить некоторые числа. Это неудобно.

Есть ли HTML-свойство или что-то еще. похоже что заставит Android (и iPhone) отображать цифровую клавиатуру по умолчанию?

Опять же, это приложение Rails, а не нативное приложение для смартфона.

Любая помощь приветствуется, спасибо.

Ответы [ 3 ]

13 голосов
/ 14 августа 2011

В HTML 5 type='number' говорит, что поле ожидает только цифры, а современные браузеры допускают только числовые вводы.

<input type='number' value='123' />

EDIT:

Позвольте мне немного изменить, поскольку, судя по комментариям, оригинальный ответ для большинства немного поверхностен.

В основном у вас есть три варианта: type='number', type='range' и type='tel'. Никто из них не гарантирует работу. Результат зависит от браузера и клавиатуры.

Например, мой Android Opera Mobile не запрашивает цифровую клавиатуру, но он добавляет спинбокс в поле number, как версия для настольного компьютера. Spinbox, который работает с step='0.1', но не очень подходит для мобильного использования с текущей реализацией.

На моем Android Firefox 5 number также не дает числовую клавиатуру с моим исходным вводом - вот где я начинаю сомневаться в том, поддерживает ли моя стандартная клавиатура числовую, - но tel да! И с точкой! А также ABC DEF GHI для 1 2 3, который выдает его. Однако type='tel' не является стандартом HTML5 (пока), и вы не получаете подтверждение из браузера. (Обновление 2013-08: tel был сделан стандартом HTML5! Я не уверен, когда ...)

Что касается range, спецификации ожидают, что браузер предоставляет ползунок вместо поля ввода. Некоторые делают, некоторые нет, и iPhone Safari находится в последнем лагере, когда я последний раз проверял. Если вы не возражаете против разнообразной презентации, это может быть лучшим выбором.

Да, я знаю. Добро пожаловать в разработку HTML 5. Вещи улучшаются; Надеюсь, вас не остановит тот шторм, в котором мы сейчас находимся.

7 голосов
/ 09 июля 2014

Я обнаружил, что объединение 2 методов позволит этому произойти.

В большинстве браузеров Android настройка type="number должна выполнять большую часть времени.Однако в iOS это вызовет обычную клавиатуру, но по умолчанию используется номер и страница со специальными символами.Я предпочитаю ввод номера телефона номеронабирателя.Для этого в iOS используйте атрибут pattern.Конечный элемент HTML будет выглядеть так:

<input type="number" pattern="[0-9]*" value="123" />
1 голос
/ 11 ноября 2012

type = 'tel' / улучшение HTML?

Если type = 'tel' не является частью html5, то кто организует точное поведение этого атрибута?

Надеюсь, атрибут tel должен принимать два стиля:

  1. Номер телефона в национальном формате:

Вот пример из Финляндии:

0401234567

  1. Номер телефона международного формата:

Вот тот же пример из Финляндии, но в надлежащем международном формате:

+ 358401234567

Итак, в «тел» правила должны быть следующими:

Первый символ может быть либо цифрой, либо специальным символом «+».

Любые другие символы должны быть цифрами.

Этот формат подойдет для любой страны.

Вот еще один пример из Австралии:

+ 61418765432 (международный формат)

0418765432 (тот же номер телефона в национальном формате)

Кажется, что североамериканцы используют свой собственный формат, такой как (212) 1234567.

Но проблема в том, что он несовместим с любой другой страной.

Также следует отметить, что длина действующего номера телефона может варьироваться как между странами, так и даже внутри одной и той же страны. Таким образом, «tel» не должен накладывать никаких ограничений на длину, по крайней мере, не слишком строгих.

Понятия не имею, какая максимальная допустимая длина номера телефона в международном формате.

Однако в Финляндии он указан как 12 значащих цифр в национальной части.

Итак, вот пример самого длинного действительного числа, которое можно использовать в Финляндии:

0501234567890

или

+ 358501234567890 в международном формате.

В мобильных телефонах GSM, если вы используете номер телефона как часть AT-команды, вы можете (в некоторых командах) указать тип (формат) номера. Но если вы этого не сделаете,

по умолчанию предполагается, что номер имеет правильный международный формат, ЕСЛИ номер начинается с символа "+",

в противном случае предполагается, что это в национальном формате,

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

Итак, является ли "tel" безопасным для использования в других странах, кроме США, или он принудительно устанавливает номер в североамериканском формате, что неправильно для каждой страны, кроме США?

...