Подтвердить что ты не робот

HTML5 Тип ввода = номер удаляет ведущий ноль

В Chrome 15 при использовании элемента в качестве текстового поля ведущие нули (например, 011) удаляются, даже если введенный номер не нарушает правила проверки (например, min, max). Есть ли атрибут, чтобы заставить нуль оставаться в поле после того, как он потерял фокус? Приложение для этого - числовые данные, такие как международные телефонные префиксы.

4b9b3361

Ответ 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" будет использовать цифровую клавиатуру вместо клавиатуры по умолчанию.