Menu

Типы input в HTML: все 22 типа тега input

Все типы тега <input> в одном месте: text, email, password, number, range, дата и время, color, file, hidden и остальные, с тем, что каждый проверяет, какую клавиатуру открывает на телефоне и какие атрибуты у них общие.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

Тег input и его типы

<input> это поле формы, а его атрибут type определяет, какое именно. Один и тот же тег создает текстовое поле, ползунок, выбор даты или выбор цвета. Попробуйте каждое поле ниже и нажмите Submit, чтобы увидеть, что отправляет форма:

<input> это пустой элемент, поэтому закрывающего тега у него нет. Его name это ключ, под которым отправляется значение, а value это начальное значение. Отсутствующий или написанный с ошибкой type дает обычное текстовое поле.

Все типы input в HTML

typeЧто этоПримечания
textОдна строка текстаПо умолчанию
passwordТекст, показанный точкамиСам по себе не шифруется; отправляйте по HTTPS
emailАдрес emailПроверяет формат; клавиша @ на клавиатуре телефона
urlВеб-адресДолжен начинаться со схемы, например https://
telНомер телефонаЦифровая клавиатура на телефоне, формат не проверяется
searchПоле поискаЧасто показывает кнопку очистки
numberЧислоКнопки прокрутки, min, max, step
rangeПолзунокНеточный по замыслу; значение это число
dateДатаЗначение YYYY-MM-DD
timeВремя сутокЗначение HH:MM (24-часовой формат)
datetime-localДата и время без часового поясаЗначение YYYY-MM-DDTHH:MM
monthГод и месяцПоддерживается не во всех браузерах
weekГод и номер неделиПоддерживается не во всех браузерах
colorВыбор цветаЗначение #rrggbb строчными буквами
checkboxФлажок вкл/выклСм. чекбокс в HTML
radioОдин вариант из группыСм. радиокнопка в HTML
fileВыбор файлаaccept, multiple
hiddenЗначение, которое отправляется, но не показываетсяДля ID и токенов
submitКнопка отправки<button type="submit"> гибче
resetКнопка сбросаРедко бывает хорошей идеей
buttonКнопка, которая сама ничего не делаетДля JavaScript
imageКнопка отправки в виде картинкиТакже отправляет координаты клика

Текстовые типы и клавиатуры телефонов

email, url, tel, search и text на компьютере выглядят как текстовое поле. Разница в проверке и в том, какая клавиатура открывается на телефоне. Рамка в этом примере становится зеленой или красной в зависимости от того, как браузер оценивает значение:

  • ada@example для браузера корректный email: он проверяет только наличие текста, @ и домена, но не то, что в домене есть точка. Настоящая проверка происходит на сервере.
  • example.com не является корректным url, потому что в нем нет схемы. https://example.com корректен.
  • tel принимает что угодно. Форматы телефонов слишком различаются от страны к стране, поэтому встроенной проверки нет; если она нужна, добавьте pattern.
  • inputmode="numeric" просит телефон показать цифровую клавиатуру без проблем type="number", поэтому это правильный выбор для почтовых индексов, одноразовых кодов и номеров карт.

number и range

Оба принимают min, max и step. number нужен для точных значений; range это ползунок для значений, где точное число не так важно. Ползунок не показывает число, поэтому добавьте к нему <output>:

По умолчанию step у number равен 1, поэтому поле цены без step="0.01" отклоняет 4.99 при отправке формы. В JavaScript input.value всегда строка; чтобы получить число, используйте input.valueAsNumber.

Дата и время

Типы даты и времени открывают собственный выбор браузера. То, что видит читатель, следует его локали (09/24/2026, 24.09.2026), но значение всегда в одном фиксированном формате:

Именно этот фиксированный формат получает сервер и читает JavaScript, поэтому разбирать «24.09.2026» вам никогда не придется. min и max принимают тот же формат. У datetime-local нет часового пояса: если он важен, переводите время на сервере с учетом пояса читателя.

color и file

accept="image/*" ограничивает выбор файлов картинками (и на телефонах предлагает камеру); он принимает и расширения, например accept=".pdf,.docx". Это лишь подсказка для окна выбора, поэтому проверяйте тип файла на сервере. multiple разрешает несколько файлов. Для настоящей загрузки форме также нужны method="post" и enctype="multipart/form-data".

Подсказки через datalist

<datalist> дает текстовому полю список подсказок, но при этом разрешает любое значение. Свяжите их атрибутом list:

Введите в поле «ja», чтобы увидеть подходящие подсказки. В отличие от select, читатель может ввести значение, которого нет в списке.

Атрибуты полей input

АтрибутЧто делает
nameКлюч, под которым отправляется значение
valueНачальное значение
placeholderПодсказка, видимая, пока поле пустое (не подпись)
requiredПоле нужно заполнить перед отправкой
disabledНельзя использовать, и оно не отправляется
readonlyНельзя редактировать, но оно отправляется
autocompleteЧто подставлять автозаполнением: email, name, current-password, one-time-code, off
min, max, stepОграничения для чисел, диапазонов, дат и времени
minlength, maxlengthОграничения длины для текстовых типов
patternРегулярное выражение, которому должно соответствовать все значение
inputmodeКакую клавиатуру показать на телефоне: numeric, decimal, email, tel, url
listid элемента <datalist>
multipleНесколько значений, для email и file
acceptТипы файлов для file

Частые ошибки

  • type="number" для телефонов, почтовых индексов или номеров карт. Это не количества. Используйте tel или text с inputmode="numeric".
  • Поле цены без step="0.01". Дробные значения не проходят проверку.
  • placeholder вместо подписи. Он исчезает, как только читатель начинает печатать.
  • accept или type="email" как защита. Это удобства; сервер все равно проверяет еще раз.
  • type="month" или type="week" без запасного варианта. Некоторые браузеры показывают обычное текстовое поле.
  • Закрывающий тег </input>. <input> пустой элемент.

Часто задаваемые вопросы

Сколько типов input в HTML?

22: button, checkbox, color, date, datetime-local, email, file, hidden, image, month, number, password, radio, range, reset, search, submit, tel, text, time, url и week. Неизвестный или отсутствующий тип ведет себя как text.

Какой тип input в HTML по умолчанию?

text. <input> без type или с типом, которого браузер не знает, это однострочное текстовое поле.

Использовать ли type="number" для телефонов и почтовых индексов?

Нет. number нужен для количеств: он добавляет кнопки прокрутки и не принимает +, пробелы и дефисы, которые бывают в номерах телефонов. Используйте type="tel" для номеров телефонов и type="text" с inputmode="numeric" для кодов вроде почтовых индексов и номеров карт.

В каком формате значение input type date?

Значение всегда YYYY-MM-DD, например 2026-09-24, в каком бы формате читатель ни видел дату на экране. Отображение следует локали читателя; отправляемое значение и значение в скрипте нет.

Нужен ли тегу input закрывающий тег?

Нет. <input> это пустой элемент: пишите <input type="text" name="city">. Закрывающий </input> некорректен, а косая черта в <input /> разрешена, но ничего не делает.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ