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