У меня есть форма ввода номера кредитной карты, которая будет использоваться как мобильными, так и немобильными браузерами.
Я хочу намекнуть, что клавиатура должна появиться на мобильном телефоне и разрешить (необязательные) пробелы, поэтому необходимо принять "4111 1234 1234 1234" или "4111123412341234".
Из того, что я нашел, варианты:
a) <input type="tel"/>
- это похоже на то, что я хочу (с текущими мобильными браузерами, по крайней мере), но это семантически неправильно.
b) <input type="text" pattern="[\d ]*"/>
или аналогичный - iPhone распознает некоторые шаблоны ([0-9]*
, \d*
) как работающие с клавиатурой, но это не работать на Android. Кроме того, я не уверен, что есть какие-то шаблоны, которые iPhone предоставит numpad для того, чтобы разрешить пробелы, хотя у меня нет iPhone под рукой, чтобы проверить прямо сейчас.
c) Попытка обнаружения браузера с помощью Javascript и использование (a) для мобильных устройств и (b) для немобильных. Cludgy, и никакой реальной выгоды от (a).
<input type="number"/>
кажется не стартером, так как Chrome, по крайней мере, будет принудительно вводить такой номер в число, поэтому прерывая ввод с пробелами.
Есть ли лучший способ намекнуть на мобильные браузеры, что они должны предлагать numpad, чем использовать type="tel"
?
Изменить:
Может быть, свойство -webkit-*
, которое может быть применено к нормальному текстовому полю ввода, чтобы намекнуть, что нужно отобразить numpad?