Поля ввода в HTML: тег input и его типы (text, email, number, password)

У тега <input> есть атрибут type, который меняет не только смысл поля, но и то, как оно ведёт себя: type="password" прячет символы точками, type="number" добавляет стрелки для увеличения числа, а на телефоне для type="email" или type="tel" появляется своя, удобная клавиатура.

Попробуй поменять один из типов на date или tel - вид поля справа изменится сам.

input и атрибут type

Без атрибута type поле <input> ведёт себя как обычное текстовое поле - это значение по умолчанию. Указывая конкретный тип, ты не просто подписываешь поле для себя - браузер меняет его реальное поведение: показывает подходящую клавиатуру на телефоне, добавляет свои элементы управления (например, стрелки у чисел или выбор даты в календаре) и делает базовую проверку формата ещё до отправки формы.

<input type="email" name="email" placeholder="you@example.com"> - на телефоне появится клавиатура с @ и без лишних кнопок, а браузер проверит хотя бы базовый формат.

<input type="text" name="email" placeholder="you@example.com"> - технически сработает, но поле не получит ни удобную клавиатуру, ни встроенную проверку формата - хотя это бесплатно и просто добавляется одним словом в type.

Типы, которые не то, чем кажутся

Некоторые типы работают не совсем так, как ожидает новичок. type="number" не запрещает вводить ничего, кроме цифр - в поле реально можно набрать e, + и -, потому что спецификация допускает научную запись вроде 1e3 (это 1000), а не только простые целые числа. А type="email" проверяет только упрощённый общий шаблон адреса - не гарантирует, что такой ящик реально существует и что письмо на него дойдёт.

<input type="email" required><!-- + подтверждение по почте на сервере --> - клиентская проверка на глаз плюс реальное подтверждение через письмо на сервере.

<input type="email" required><!-- и всё, дальше не проверяем --> - опора только на проверку в браузере: она смотрит на формат текста, а не на то, существует ли такой адрес на самом деле.

Из истории В HTML 4 у input было около десятка типов - text, password, checkbox, radio, submit, reset, file, hidden, image, button. Новые, более осмысленные типы - email, url, tel, number, range, date и другие - начались с инициативы Web Forms 2.0, которую 27 июня 2004 года представил Ian Hickson от имени WHATWG. Официально они вошли в стандарт вместе с HTML5 - рекомендацией W3C от 28 октября 2014 года.

Частые ошибки новичков

ОшибкаЧто происходитКак исправить
Использовать type="text" для email, телефона или числа Поле работает, но теряет бесплатную удобную клавиатуру на телефоне и базовую проверку формата Указывать конкретный тип - email, tel, number и так далее
Считать, что type="number" пропускает только цифры В поле всё равно можно ввести e, + и - для научной записи - это по спецификации, не баг Не полагаться на type="number" как на строгий фильтр символов - при необходимости проверять значение дополнительно
Считать проверку type="email" в браузере достаточной защитой Браузер проверяет только общий формат текста, а не то, существует ли такой адрес на самом деле Добавлять реальную проверку на сервере (например, письмо с подтверждением)

Шпаргалка

ТипОсобенность
textОбычное текстовое поле - значение по умолчанию
emailКлавиатура с @ на телефоне, упрощённая проверка формата (не факта существования)
numberСтрелки для числа; пропускает e, + и - для научной записи
passwordСкрывает введённые символы точками
tel, date, urlСвоя клавиатура или элемент выбора на телефоне под конкретный формат

Коротко: отвечаем на вопросы

Правда ли, что type="number" не даёт ввести ничего, кроме цифр?

Нет. В поле всё равно можно ввести буквы e, знаки + и - - они нужны для научной записи чисел вроде 1e3 (это 1000). Это задокументированная особенность спецификации, а не ошибка браузера.

Гарантирует ли type="email", что адрес настоящий и рабочий?

Нет. Браузер проверяет только упрощённый общий формат текста (что-то похожее на адрес), а не то, существует ли такой почтовый ящик на самом деле и дойдёт ли до него письмо. Для реальной проверки нужна проверка на сервере, например письмо с подтверждением.

Меняют ли типы вроде tel, email или number вид клавиатуры на телефоне?

Да, это реальное и документированное поведение - мобильные браузеры показывают клавиатуру, подходящую под тип поля (например, с @ для email или только с цифрами для number). Но это удобство ввода, а не проверка правильности данных - валидация происходит отдельно.

Категория
Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×