HTML5 Тип ввода = число удаляет начальный ноль
В Chrome 15 при использовании элемента в качестве текстового поля начальные нули (например, 011) удаляются, даже если введенное число не нарушает правила проверки (например, min, max). Есть ли атрибут, заставляющий ноль оставаться в поле после потери фокуса? Приложение для этого - числовые данные, такие как международные телефонные префиксы.
4 ответа
<input type="text" pattern="[0-9]*" ...
это должно сделать это для вас. Появится цифровая клавиатура на iPhone и на более красивых телефонах с Android, на которых я тестировал.
<input type="tel">
был введен для этой конкретной цели. Это один из новых типов ввода в HTML5.
Мне это нужно для мобильных браузеров, и я использовал сочетание обоих решений, как это:
<input type="tel" pattern="[0-9]*">
В iOS цифровая клавиатура отображается только с доступными цифрами (без символов # или *), тогда как на телефонах Android слово "tel" интерпретируется правильно, но не в соответствии с шаблоном (пока нет на тех немногих телефонах, которые у меня есть).
Я предполагаю, что, когда браузеры Android начнут реализовывать атрибут "pattern", это должно хорошо работать и на Android (как предполагает спецификация whatwg).
До тех пор вы должны будете проверять наличие нецифровых символов во входных данных и удалять их. замена javascript (/[^0-9*]/g,'') полезна для этого.
надеюсь это поможет
8 лет спустя...
Осторожно:
Ответы с использованием type="tel"
не полностью решить проблему, особенно в случае числовых полей, где вы можете написать плавающие / десятичные числа и другие разрешенные символы (например, +-.,).
Решение:
Попробуйте использовать текстовый ввод с шаблоном и режимом ввода, например:
<input type="text" inputmode="numeric" pattern="[-+]?[0-9]*[.,]?[0-9]+">
Подробности:
Шаблон там поможет сохранить начальные 0 и вести себя как числовое поле (со всеми другими разрешенными символами).
И inputmode="numeric"
потянет цифровую клавиатуру вместо стандартной.
Ответ, который WHATWG предоставил мне в IRC, состоял в том, что для нечисловых (например, не float / int) данных, которые имеют числовой характер, текст, как правило, является правильным типом ввода для использования. Исключением является то, что если вы используете что-то, где определенный тип ввода (например, номера телефонов, даты) уже существует.
Тип ввода = число следует использовать только для входных данных, которые являются буквально числами (int), а не данными, которые используют цифры (например, почтовые индексы).