Spec-Zone.ru › HTML

<input> элемент HTML input

Baseline Широко доступно *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

* Некоторые компоненты этой функции могут иметь разный уровень поддержки.

  • Подробнее
  • Полная таблица совместимости
  • Оставить отзыв
>

Элемент <input> HTML используется для создания интерактивных элементов управления в веб-формах, позволяющих принимать данные от пользователя. В зависимости от устройства и пользовательского агента доступен широкий выбор типов входных данных и виджетов управления. Элемент <input> — один из самых мощных и сложных элементов HTML из-за огромного количества сочетаний типов входных данных и атрибутов.

Попробуйте

<label for="name">Name (4 to 8 characters):</label>

<input
  type="text"
  id="name"
  name="name"
  required
  minlength="4"
  maxlength="8"
  size="10" />
label {
  display: block;
  font:
    1rem "Fira Sans",
    sans-serif;
}

input,
label {
  margin: 0.4rem 0;
}

Типы <input>

Поведение элемента <input> существенно различается в зависимости от значения его атрибута type, поэтому каждый тип рассматривается на отдельной справочной странице. Если этот атрибут не указан, используется тип по умолчанию — text.

Доступны следующие типы:

Тип Описание Примеры
button Кнопка без поведения по умолчанию, отображающая значение атрибута value; по умолчанию значение пустое.
checkbox Флажок, позволяющий выбрать или снять выбор одного значения.
color Элемент управления для выбора цвета; в поддерживающих браузерах при активации открывается палитра цветов.
date Элемент управления для ввода даты (года, месяца и дня без указания времени). В поддерживающих браузерах при активации открывается средство выбора даты или числовые колёсики для выбора года, месяца и дня.
datetime-local Элемент управления для ввода даты и времени без часового пояса. В поддерживающих браузерах при активации открывается средство выбора даты или числовые колёсики для выбора даты и времени.
email Поле для редактирования адреса электронной почты. Выглядит как поле ввода text, но в поддерживающих браузерах и на устройствах с динамической клавиатурой имеет параметры проверки и соответствующую клавиатуру.
file Элемент управления, позволяющий пользователю выбрать файл. Используйте атрибут accept, чтобы задать типы файлов, которые можно выбрать с помощью этого элемента.
hidden Элемент управления, который не отображается, но его значение отправляется на сервер. Пример приведён в следующем столбце, но он скрыт!
image Графическая кнопка submit. Отображает изображение, заданное атрибутом src. Атрибут alt отображается, если изображение по адресу src отсутствует.
month Элемент управления для ввода месяца и года без указания часового пояса.
number Элемент управления для ввода числа. Отображает счётчик и добавляет проверку по умолчанию. На некоторых устройствах с динамическими клавиатурами отображает цифровую клавиатуру.
password Однострочное текстовое поле, значение которого скрыто. Предупреждает пользователя, если сайт не защищён.
radio Переключатель, позволяющий выбрать одно значение из нескольких вариантов с одинаковым значением name.
range Элемент управления для ввода числа, точное значение которого не имеет значения. Отображается в виде ползунка, установленного по умолчанию на среднее значение. Используется вместе с атрибутами min и max, задающими диапазон допустимых значений.
reset Кнопка, сбрасывающая содержимое формы к значениям по умолчанию. Не рекомендуется к использованию.
search Однострочное текстовое поле для ввода поисковых запросов. Переводы строк автоматически удаляются из введённого значения. В поддерживающих браузерах может отображаться значок удаления, позволяющий очистить поле. На некоторых устройствах с динамическими клавиатурами вместо клавиши ввода отображается значок поиска.
submit Кнопка, отправляющая форму.
tel Элемент управления для ввода номера телефона. На некоторых устройствах с динамическими клавиатурами отображает телефонную клавиатуру.
text Тип по умолчанию. Однострочное текстовое поле. Переводы строк автоматически удаляются из введённого значения.
time Элемент управления для ввода времени без указания часового пояса.
url Поле для ввода URL. Выглядит как поле ввода text, но в поддерживающих браузерах и на устройствах с динамической клавиатурой имеет параметры проверки и соответствующую клавиатуру.
week Элемент управления для ввода даты, состоящей из номера недели в году и номера года недели, без указания часового пояса.
Устаревшие значения
datetime Элемент управления для ввода даты и времени (часа, минуты, секунды и доли секунды) в часовом поясе UTC.

Атрибуты

Элемент <input> обладает широкими возможностями благодаря своим атрибутам; важнейшим из них является атрибут type, описанный выше на примерах. Поскольку каждый элемент <input>, независимо от типа, основан на интерфейсе HTMLInputElement, технически они имеют один и тот же набор атрибутов. Однако на практике большинство атрибутов влияют только на определённую группу типов полей ввода. Кроме того, воздействие некоторых атрибутов зависит от типа поля ввода и может различаться для разных типов.

В этом разделе приведена таблица со всеми атрибутами и их краткими описаниями. За ней следует список с более подробным описанием каждого атрибута и указанием связанных с ним типов полей ввода. Атрибуты, общие для большинства или всех типов, подробно описаны ниже. Атрибуты, уникальные для отдельных типов, а также атрибуты, общие для всех типов, но имеющие особое поведение при использовании с конкретным типом, описаны на страницах этих типов.

Атрибуты элемента <input> включают глобальные атрибуты HTML, а также:

Атрибут Типы Описание
accept file Подсказка о допустимом типе файла в элементах управления загрузкой файлов
alpha color Непрозрачность цвета
alt image Атрибут alt для типа image. Необходим для обеспечения доступности
autocapitalize все, кроме url, email и password Управляет автоматическим преобразованием регистра вводимого текста.
autocomplete все, кроме checkbox, radio и кнопок Подсказка для функции автозаполнения формы
capture file Метод захвата мультимедиа в элементах управления загрузкой файлов
checked checkbox, radio Указывает, отмечена ли команда или элемент управления
colorspace color Цветовое пространство, используемое для выбора значения цвета
dirname hidden, text, search, url, tel, email Имя поля формы, используемое для отправки сведений о направлении текста элемента вместе с формой
disabled все Указывает, отключён ли элемент управления формы
form все Связывает элемент управления с элементом form
formaction image, submit URL для отправки формы
formenctype image, submit Тип кодирования набора данных формы для отправки формы
formmethod image, submit Метод HTTP для отправки формы
formnovalidate image, submit Отключает проверку элементов управления формы при её отправке
formtarget image, submit Контекст просмотра для отправки формы
height image Аналогичен атрибуту height элемента <img>; задаёт вертикальный размер
list все, кроме hidden, password, checkbox, radio и кнопок Значение атрибута id элемента <datalist> со списком вариантов автозаполнения
max date, month, week, time, datetime-local, number, range Максимальное значение
maxlength text, search, url, tel, email, password Максимальная длина (количество символов) значения value
min date, month, week, time, datetime-local, number, range Минимальное значение
minlength text, search, url, tel, email, password Минимальная длина (количество символов) значения value
multiple email, file Логический атрибут. Разрешает ли ввод нескольких значений
name все Имя элемента управления формы. Отправляется вместе с формой в составе пары имя/значение
pattern text, search, url, tel, email, password Шаблон, которому должно соответствовать значение value, чтобы считаться допустимым
placeholder text, search, url, tel, email, password, number Текст, отображаемый в элементе управления формы, если его значение не задано
popovertarget button Назначает элемент <input type="button"> элементом управления для всплывающего элемента
popovertargetaction button Задаёт действие, которое должен выполнять элемент управления всплывающим окном
readonly все, кроме hidden, range, color, checkbox, radio и кнопок Логический атрибут. Значение нельзя редактировать
required все, кроме hidden, range, color и кнопок Логический атрибут. Для отправки формы необходимо указать значение или установить флажок
size text, search, url, tel, email, password Размер элемента управления
src image Аналогичен атрибуту src элемента <img>; адрес ресурса изображения
step date, month, week, time, datetime-local, number, range Допустимые шаги изменения значения
switch checkbox Определяет, следует ли отображать поле checkbox в виде переключателя
type все Тип элемента управления формы
value все, кроме image Значение элемента управления. Если указано в HTML, соответствует начальному значению
width image Аналогичен атрибуту width элемента <img>

После описаний стандартных атрибутов перечислены несколько дополнительных нестандартных атрибутов.

Отдельные атрибуты

accept

Допустим только для типа ввода file; атрибут accept определяет, какие типы файлов можно выбрать в элементе управления загрузкой file. См. тип ввода «файл».

alpha

Допустим только для типа ввода color; атрибут alpha позволяет конечному пользователю задать непрозрачность выбранного цвета.

alt

Допустим только для кнопки image; атрибут alt задаёт альтернативный текст для изображения. Значение атрибута отображается, если изображение src отсутствует или не может быть загружено. См. тип ввода «изображение».

autocapitalize

Определяет, преобразуется ли вводимый текст автоматически в верхний регистр и, если да, каким образом. Дополнительные сведения см. на странице глобального атрибута autocapitalize.

autocomplete

(Это не логический атрибут!) Значением атрибута autocomplete является строка, разделённая пробелами, которая описывает, какую функцию автозаполнения, если таковая имеется, должен предоставлять элемент ввода. Типичная реализация автозаполнения подставляет ранее введённые значения из того же поля ввода, однако возможны и более сложные варианты. Например, браузер может интегрироваться со списком контактов устройства и автоматически подставлять адреса email в поле ввода адреса электронной почты. Допустимые значения см. в разделе autocomplete.

Атрибут autocomplete допустим для hidden, text, search, url, tel, email, date, month, week, time, datetime-local, number, range, color и password. Этот атрибут не влияет на типы ввода, которые не возвращают числовые или текстовые данные; он допустим для всех типов ввода, кроме checkbox, radio, file и любых типов кнопок.

Дополнительную информацию см. в разделе атрибут autocomplete, включая сведения о безопасности паролей и о том, чем autocomplete для hidden немного отличается от других типов ввода.

autofocus

Логический атрибут, наличие которого указывает, что элемент ввода должен автоматически получить фокус после завершения загрузки страницы (или после отображения <dialog>, содержащего этот элемент).

Примечание: Элемент с атрибутом autofocus может получить фокус до срабатывания события DOMContentLoaded.

В документе не может быть более одного элемента с атрибутом autofocus. Если этот атрибут задан для нескольких элементов, фокус получит первый из них.

Атрибут autofocus нельзя использовать для элементов ввода типа hidden, поскольку скрытые элементы ввода не могут получать фокус.

Предупреждение: Автоматическая фокусировка элемента управления формы может сбить с толку людей с нарушениями зрения, использующих программы чтения с экрана, а также людей с когнитивными нарушениями. Когда задан атрибут autofocus, программы чтения с экрана «переносят» пользователя к элементу управления формы, не предупредив его заранее.

При использовании атрибута autofocus тщательно учитывайте требования доступности. Автоматическая фокусировка элемента управления может привести к прокрутке страницы при загрузке. На некоторых сенсорных устройствах фокус также может вызвать отображение экранной клавиатуры. Хотя программа чтения с экрана озвучит метку элемента управления формы, получившего фокус, она не озвучит ничего перед меткой; зрячий пользователь на небольшом устройстве также не увидит контекст, заданный предшествующим содержимым.

capture

Атрибут capture, появившийся в спецификации HTML Media Capture и допустимый только для типа ввода file, определяет, какое мультимедийное устройство — микрофон, видеокамера или камера — следует использовать для съёмки нового файла, предназначенного для загрузки с помощью элемента управления загрузкой file в поддерживаемых сценариях. См. тип ввода «файл».

checked

Атрибут checked — логический и допустим как для типа radio, так и для типа checkbox. Если он задан для типа radio, это означает, что радиокнопка выбрана в данный момент в группе радиокнопок с одинаковыми именами. Если он задан для типа checkbox, это означает, что флажок установлен по умолчанию (при загрузке страницы). Он не указывает, установлен ли этот флажок в данный момент: если состояние флажка изменится, этот атрибут содержимого не отразит это изменение. (Обновляется только IDL-атрибут checked объекта HTMLInputElement.)

Примечание: В отличие от других элементов управления ввода, значения флажков и радиокнопок включаются в отправляемые данные, только если они в данный момент checked. Если это так, отправляются имена и значения выбранных элементов управления.

Например, если флажок с атрибутом name, равным fruit, имеет атрибут value со значением cherry и установлен, отправляемые данные формы будут содержать fruit=cherry. Если флажок не активен, он вообще не включается в данные формы. Значение on по умолчанию для флажков и радиокнопок — value.

colorspace

Допустим только для типа ввода color; атрибут colorspace задаёт цветовое пространство, используемое элементом ввода type="color". Возможные перечислимые значения:

  • "limited-srgb": цвет задан в цветовом пространстве sRGB. Сюда входят значения rgb(), hsl(), hwb() и <hex-color>. Значение цвета ограничено 8 битами на компонент r, g и b. Это значение используется по умолчанию.
  • "display-p3": цветовое пространство Display P3, например color(display-p3 1.84 -0.19 0.72 / 0.6)
dirname

Атрибут dirname, допустимый для типов ввода hidden, text, search, url, tel и email, позволяет отправлять сведения о направлении текста элемента. Если атрибут задан, элемент управления формы отправит две пары «имя/значение»: первая содержит name и value, а вторая — значение атрибута dirname в качестве имени и значение ltr или rtl, определяемое браузером.

<form action="page.html" method="post">
  <label>
    Fruit:
    <input type="text" name="fruit" dirname="fruit-dir" value="cherry" />
  </label>
  <input type="submit" />
</form>
<!-- page.html?fruit=cherry&fruit-dir=ltr -->

При отправке формы выше элемент ввода отправляет как пару name / value для fruit=cherry, так и пару dirname / направление для fruit-dir=ltr. Дополнительные сведения см. в разделе атрибут dirname.

disabled

Логический атрибут, наличие которого указывает, что пользователь не должен иметь возможности взаимодействовать с элементом ввода. Отключённые элементы ввода обычно отображаются более тусклым цветом или обозначаются иным способом, показывающим, что поле недоступно для использования.

В частности, отключённые элементы ввода не получают событие click и не отправляются вместе с формой.

Примечание: Хотя это не требуется спецификацией, Firefox по умолчанию сохраняет динамическое состояние отключения элемента <input> при перезагрузке страницы. Используйте атрибут autocomplete, чтобы управлять этой функцией.

form

Строка, указывающая элемент <form>, с которым связан элемент ввода (то есть его владелец формы). Если эта строка задана, её значение должно совпадать со значением id элемента <form> в том же документе. Если этот атрибут не задан, элемент <input> связывается с ближайшей содержащей его формой, если таковая имеется.

Атрибут form позволяет разместить элемент ввода в любом месте документа, но включить его в форму, расположенную в другой части документа.

Примечание: Элемент ввода может быть связан только с одной формой.

formaction

Допустим только для типов ввода image и submit. Дополнительные сведения см. в разделе о типе ввода «отправка».

formenctype

Допустим только для типов ввода image и submit. Дополнительные сведения см. в разделе о типе ввода «отправка».

formmethod

Допустим только для типов ввода image и submit. Дополнительные сведения см. в разделе о типе ввода «отправка».

formnovalidate

Допустим только для типов ввода image и submit. Дополнительные сведения см. в разделе о типе ввода «отправка».

formtarget

Допустим только для типов ввода image и submit. Дополнительные сведения см. в разделе о типе ввода «отправка».

height

Допустим только для кнопки ввода image; атрибут height задаёт высоту файла изображения, которое отображается в качестве графической кнопки отправки. См. тип ввода «изображение».

id

Глобальный атрибут, допустимый для всех элементов, включая все типы ввода. Он задаёт уникальный идентификатор (ID), который должен быть уникальным во всём документе. Его назначение — идентифицировать элемент при создании ссылок. Значение используется в качестве значения атрибута for элемента <label>, чтобы связать метку с элементом управления формы. См. раздел <label>.

inputmode

Глобальное значение, допустимое для всех элементов. Оно подсказывает браузерам, какую конфигурацию виртуальной клавиатуры использовать при редактировании этого элемента или его содержимого. Возможные значения: none, text, tel, url, email, numeric, decimal и search.

list

Значением атрибута list должен быть id элемента <datalist>, расположенного в том же документе. Элемент <datalist> предоставляет список заранее заданных значений, предлагаемых пользователю для этого поля ввода. Значения из списка, несовместимые с атрибутом type, не включаются в предлагаемые варианты. Эти значения являются предложениями, а не обязательными требованиями: пользователи могут выбрать значение из списка или указать другое.

Атрибут допустим для text, search, url, tel, email, date, month, week, time, datetime-local, number, range и color.

Согласно спецификациям, атрибут list не поддерживается для hidden, password, checkbox, radio, file и любых типов кнопок.

В зависимости от браузера пользователь может увидеть предлагаемую пользовательскую палитру цветов, отметки на шкале или даже поле ввода, которое раскрывается как <select>, но при этом позволяет вводить значения, которых нет в списке. Информацию о других типах ввода см. в таблице совместимости браузеров.

См. элемент <datalist>.

max

Атрибут допустим для date, month, week, time, datetime-local, number и range и задаёт наибольшее значение в диапазоне допустимых значений. Если введённое в элемент value превышает это значение, элемент не проходит проверку ограничений. Если значение атрибута max не является числом, максимальное значение для элемента не задано.

Есть особый случай: если тип данных циклический (например, даты или время), значение max может быть меньше значения min, что указывает на возможность перехода диапазона через границу; например, так можно задать временной диапазон с 22:00 до 4:00.

maxlength

Атрибут допустим для text, search, url, tel, email и password и задаёт максимальную длину строки (измеряемую в кодовых единицах UTF-16), которую пользователь может ввести в поле. Значение должно быть целым числом не меньше 0. Если maxlength не задан или задано недопустимое значение, максимальная длина поля не ограничена. Это значение также должно быть больше или равно значению minlength.

Элемент ввода не пройдёт проверку ограничений, если длина введённого в поле текста превышает maxlength кодовых единиц UTF-16. По умолчанию браузеры не позволяют пользователям вводить больше символов, чем разрешено атрибутом maxlength. Проверка ограничений выполняется только при изменении значения пользователем. Дополнительные сведения см. в разделе Проверка на стороне клиента.

min

Атрибут допустим для date, month, week, time, datetime-local, number и range и задаёт наименьшее значение в диапазоне допустимых значений. Если введённое в элемент value меньше этого значения, элемент не проходит проверку ограничений. Если значение атрибута min не является числом, минимальное значение для элемента не задано.

Это значение должно быть меньше или равно значению атрибута max. Если атрибут min присутствует, но не задан или содержит недопустимое значение, значение min не применяется. Если атрибут min задан правильно, а непустое значение меньше минимального, разрешённого атрибутом min, проверка ограничений не позволит отправить форму. Дополнительные сведения см. в разделе Проверка на стороне клиента.

Есть особый случай: если тип данных циклический (например, даты или время), значение max может быть меньше значения min, что указывает на возможность перехода диапазона через границу; например, так можно задать временной диапазон с 22:00 до 4:00.

minlength

Атрибут допустим для text, search, url, tel, email и password и задаёт минимальную длину строки (измеряемую в кодовых единицах UTF-16), которую пользователь может ввести в поле. Значение должно быть неотрицательным целым числом, меньшим или равным значению maxlength. Если minlength не задан или задано недопустимое значение, минимальная длина ввода не ограничена.

Элемент ввода не пройдёт проверку ограничений, если длина введённого в поле текста меньше minlength кодовых единиц UTF-16; отправка формы будет предотвращена. Проверка ограничений выполняется только при изменении значения пользователем. Дополнительные сведения см. в разделе Проверка на стороне клиента.

multiple

Если задан логический атрибут multiple, пользователь может ввести в поле адреса электронной почты несколько адресов, разделённых запятыми, или выбрать несколько файлов с помощью элемента ввода file. См. типы ввода «адрес электронной почты» и «файл».

name

Строка, задающая имя элемента управления ввода. Это имя отправляется вместе со значением элемента управления при отправке данных формы.

Считайте name обязательным атрибутом (хотя формально это не так). Если для элемента ввода не задан name или name пуст, значение элемента не отправляется вместе с формой! (Отключённые элементы управления, невыбранные радиокнопки, неустановленные флажки и кнопки сброса также не отправляются.)

Есть два особых случая:

  1. _charset_ : Если используется в качестве имени элемента <input> типа «скрытый», значение value элемента ввода автоматически задаётся пользовательским агентом и соответствует кодировке символов, используемой для отправки формы.
  2. isindex: По историческим причинам имя isindex недопустимо.

Атрибут name задаёт особое поведение радиокнопок.

В группе радиокнопок с одинаковым именем одновременно может быть выбрана только одна кнопка. Выбор любой радиокнопки в группе автоматически отменяет выбор всех остальных выбранных радиокнопок этой группы. Если форма отправляется, значение выбранной радиокнопки передаётся вместе с именем.

При переходе с помощью клавиши Tab к группе радиокнопок с одинаковым именем, если одна из них выбрана, фокус получит именно она. Если кнопки группы не расположены рядом в исходном порядке, а одна из них выбрана, переход к группе начнётся с первой встретившейся кнопки этой группы, пропуская все невыбранные. Иными словами, если одна кнопка выбрана, при переходе с помощью клавиши Tab невыбранные радиокнопки группы пропускаются. Если не выбрана ни одна кнопка, группа получит фокус, когда встретится первая кнопка с этим именем.

После получения фокуса одной из радиокнопок группы клавиши со стрелками позволяют перемещаться между всеми радиокнопками с таким же именем, даже если в исходном порядке они не расположены рядом.

Если элементу ввода задан name, это имя становится свойством свойства HTMLFormElement.elements родительского элемента формы. Если у одного элемента ввода name задано значение guest, а у другого name равно hat-size, можно использовать следующий код:

let form = document.querySelector("form");

let guestName = form.elements.guest;
let hatSize = form.elements["hat-size"];

После выполнения этого кода guestName будет объектом HTMLInputElement для поля guest, а hatSize — объектом для поля hat-size.

Предупреждение: Не задавайте элементам формы name, совпадающее со встроенным свойством формы, поскольку в этом случае вы переопределите предопределённое свойство или метод ссылкой на соответствующий элемент ввода.

pattern

Атрибут pattern допустим для text, search, url, tel, email и password. Он используется для создания регулярного выражения, которому должно соответствовать value элемента ввода, чтобы значение прошло проверку ограничений. Это должно быть корректное регулярное выражение JavaScript, соответствующее типу RegExp и описанное в нашем руководстве по регулярным выражениям. Не указывайте косые черты вокруг текста шаблона. При компиляции регулярного выражения:

  1. шаблон неявно обрамляется ^(?: и )$, поэтому соответствие проверяется для всего значения ввода, то есть ^(?:<pattern>)$.
  2. задаётся флаг 'v', чтобы шаблон обрабатывался как последовательность кодовых точек Unicode, а не как ASCII.

Если атрибут pattern присутствует, но не задан или содержит недопустимое значение, регулярное выражение не применяется, а этот атрибут полностью игнорируется. Если атрибут pattern задан правильно, а непустое значение не соответствует шаблону, проверка ограничений не позволит отправить форму. Если задан атрибут multiple, скомпилированное регулярное выражение проверяется отдельно для каждого значения, разделённого запятой.

Примечание: При использовании атрибута pattern сообщите пользователю ожидаемый формат с помощью пояснительного текста рядом с полем. Также можно добавить атрибут title, объясняющий требования к соответствию шаблону; большинство браузеров отображают это значение в виде всплывающей подсказки. Для обеспечения доступности пояснение должно быть видимым. Всплывающая подсказка — лишь дополнительное улучшение.

Дополнительные сведения см. в разделе Проверка на стороне клиента.

placeholder

Атрибут placeholder допустим для text, search, url, tel, email, password и number. Он кратко подсказывает пользователю, какая информация ожидается в поле. Это должно быть слово или короткая фраза, указывающая на ожидаемый тип данных, а не объяснение или инструкция. Текст не должен содержать возвраты каретки или переводы строк. Например, если в поле ожидается имя пользователя, а его метка — «Имя», подходящей подсказкой может быть «например, Мустафа».

Примечание: Атрибут placeholder не так полезен с семантической точки зрения, как другие способы пояснения формы, и может привести к неожиданным техническим проблемам с содержимым. Дополнительные сведения см. в разделе Метки.

popovertarget

Превращает элемент <input type="button"> в кнопку управления всплывающим окном; в качестве значения принимает идентификатор управляемого элемента всплывающего окна. Дополнительные сведения см. на главной странице Popover API. Установка связи между всплывающим окном и вызывающей его кнопкой с помощью атрибута popovertarget даёт два дополнительных полезных эффекта:

  • Браузер создаёт неявную связь aria-details и aria-expanded между всплывающим окном и вызывающим его элементом, а при отображении помещает всплывающее окно в логичное место в порядке навигации с клавиатуры. Благодаря этому всплывающее окно становится доступнее для пользователей клавиатуры и вспомогательных технологий (AT); см. также возможности Popover API для обеспечения доступности.
  • Браузер создаёт неявную привязку между двумя элементами, благодаря чему очень удобно позиционировать всплывающие окна относительно элементов управления с помощью позиционирования привязок CSS. Дополнительные сведения см. в разделе позиционирование привязок всплывающего окна.
popovertargetaction

Задаёт действие, выполняемое над всплывающим окном, которым управляет элемент управления <input type="button">. Возможные значения:

"hide"

Кнопка скроет отображаемое всплывающее окно. Если попытаться скрыть уже скрытое окно, ничего не произойдёт.

"show"

Кнопка покажет скрытое всплывающее окно. Если попытаться показать уже отображаемое окно, ничего не произойдёт.

"toggle"

Кнопка переключает состояние всплывающего окна между отображением и скрытием. Если окно скрыто, оно будет показано; если отображается — скрыто. Если popovertargetaction не задан, действием по умолчанию для кнопки управления будет "toggle".

readonly

Логический атрибут, наличие которого указывает, что пользователь не должен иметь возможности редактировать значение элемента ввода. Атрибут readonly поддерживается для типов ввода text, search, url, tel, email, date, month, week, time, datetime-local, number и password.

Дополнительные сведения см. в разделе HTML-атрибут: readonly.

required

required — это логический атрибут, который, если он присутствует, указывает, что пользователь должен указать значение для поля ввода, прежде чем можно будет отправить содержащую его форму. Атрибут required поддерживается полями ввода text, search, url, tel, email, date, month, week, time, datetime-local, number, password, checkbox, radio и file.

Дополнительные сведения см. в разделе Проверка на стороне клиента и в описании атрибута HTML: required.

size

Атрибут size применим к элементам email, password, tel, url и text и задаёт, какая часть поля ввода отображается. По сути, результат такой же, как при задании свойства CSS width, но с некоторыми особенностями. Единица измерения значения зависит от типа поля ввода. Для password и text это количество символов (или единиц em); значение по умолчанию — 20. Для остальных типов единицей измерения служат пиксели (или единицы px). Свойство CSS width имеет приоритет над атрибутом size.

src

Атрибут src применим только к кнопке ввода image и содержит строку с URL файла изображения, которое отображается в качестве графической кнопки отправки формы. См. тип поля ввода image.

step

Атрибут step применим к элементам date, month, week, time, datetime-local, number и range и задаёт число, определяющее шаг изменения значения. Допустимы только значения, расположенные на целое число шагов от начального значения шага. Начальным значением шага является min, если он задан, в противном случае — value или 0, если не задано ни одно из этих значений (за исключением week, для которого начальное значение шага по умолчанию равно −259,200,000 и соответствует началу недели 1970-W01).

Если значение не указано явно:

  • Для number и range атрибут step по умолчанию равен 1.
  • Для каждого типа полей ввода даты и времени задано подходящее значение step по умолчанию; см. страницы соответствующих типов полей ввода: date, datetime-local, month, time и week.

Значение должно быть положительным числом — целым или дробным, — либо специальным значением any, которое означает, что шаг не задан и разрешено любое значение (с учётом других ограничений, таких как min и max).

Например, если задано <input type="number" min="10" step="2">, допустимы любые чётные целые числа, равные 10 или больше. Если атрибут опущен (<input type="number">), допустимо любое целое число, но дробные числа (например, 4.2) недопустимы, поскольку значение step по умолчанию равно 1. Чтобы значение 4.2 было допустимым, значение step должно было бы быть равно any, 0.1 или 0.2 либо значение min должно было бы оканчиваться на .2, например <input type="number" min="-5.2">.

Примечание: Если введённые пользователем данные не соответствуют заданному шагу, значение считается недопустимым при проверке ограничений и соответствует псевдоклассу :invalid.

Дополнительные сведения см. в разделе Проверка на стороне клиента.

switch

Атрибут switch применим только к полю ввода checkbox. Это логический атрибут, указывающий, следует ли отображать флажок в виде переключателя.

Примечание: Этот атрибут всё ещё является экспериментальным и поддерживается лишь ограниченным числом браузеров. В браузерах без поддержки атрибут игнорируется.

tabindex

Глобальный атрибут, применимый ко всем элементам, включая все типы полей ввода. Целочисленный атрибут указывает, может ли элемент получать фокус ввода (то есть находится ли он в фокусе) и должен ли он участвовать в последовательной навигации с помощью клавиатуры. Поскольку все типы полей ввода, кроме полей типа hidden, могут получать фокус, этот атрибут не следует использовать для элементов управления формы: в противном случае потребуется управлять порядком фокуса для всех элементов документа, что при неправильном использовании может ухудшить удобство использования и доступность.

title

Глобальный атрибут, применимый ко всем элементам, включая все типы полей ввода, содержащий текст со справочной информацией об элементе, к которому он относится. Обычно, но не обязательно, такая информация отображается пользователю в виде всплывающей подсказки. Атрибут title НЕ следует использовать в качестве основного объяснения назначения элемента управления формы. Вместо этого используйте элемент <label> с атрибутом for, значение которого равно атрибуту id элемента управления формы. См. раздел Метки ниже.

type

Строка, определяющая тип отображаемого элемента управления. Например, для создания флажка используется значение checkbox. Если атрибут опущен (или указано неизвестное значение), используется тип поля ввода text, создающий текстовое поле.

Допустимые значения перечислены выше в разделе Типы полей ввода.

value

Значение элемента управления ввода. Если оно указано в HTML, это начальное значение; впоследствии его можно изменить или получить в любой момент с помощью JavaScript, обратившись к свойству value соответствующего объекта HTMLInputElement. Атрибут value всегда необязателен, хотя для checkbox, radio и hidden его следует считать обязательным.

width

Атрибут width применим только к кнопке ввода image и задаёт ширину файла изображения, которое отображается в качестве графической кнопки отправки формы. См. тип поля ввода image.

Нестандартные атрибуты

В некоторых браузерах доступны также следующие нестандартные атрибуты. Как правило, следует избегать их использования, если только без них не обойтись.

Атрибут Описание
incremental Определяет, следует ли отправлять повторяющиеся события search, чтобы обновлять результаты поиска в реальном времени, пока пользователь продолжает редактировать значение поля. Только WebKit и Blink (Safari, Chrome, Opera и другие).
mozactionhint

Строка, определяющая действие, которое будет выполнено при нажатии клавиши Enter или Return во время редактирования поля; она используется для выбора подходящей подписи этой клавиши на виртуальной клавиатуре. Этот атрибут устарел; вместо него используйте enterkeyhint.

orient Задаёт ориентацию ползунка диапазона. Только Firefox.
results Максимальное количество элементов, отображаемых в раскрывающемся списке предыдущих поисковых запросов. Только Safari.
webkitdirectory Логический атрибут, указывающий, разрешено ли пользователю выбирать только каталог (или каталоги, если также присутствует атрибут multiple).
incremental

Логический атрибут incremental — это расширение WebKit и Blink (поддерживается Safari, Opera, Chrome и другими браузерами). Если он указан, он предписывает пользовательскому агенту обрабатывать поле ввода как поиск в реальном времени. Пока пользователь изменяет значение поля, пользовательский агент отправляет события search объекту HTMLInputElement, представляющему поле поиска. Это позволяет вашему коду обновлять результаты поиска в реальном времени по мере редактирования запроса пользователем.

Если атрибут incremental не указан, событие search отправляется только при явном запуске поиска пользователем (например, при нажатии клавиши Enter или Return во время редактирования поля).

Частота отправки события search ограничена: оно не отправляется чаще, чем через интервал, определяемый реализацией.

orient

Подобно нестандартному свойству CSS -moz-orient, влияющему на элементы <progress> и <meter>, атрибут orient задаёт ориентацию ползунка диапазона. Допустимые значения включают horizontal, при котором диапазон отображается горизонтально, и vertical, при котором он отображается вертикально. Современный способ создания вертикальных элементов управления формы описан в статье Создание вертикальных элементов управления формы.

results

Атрибут results, поддерживаемый только Safari, принимает числовое значение, которое позволяет переопределить максимальное количество записей в раскрывающемся меню предыдущих поисковых запросов, которое браузер автоматически предоставляет для элемента <input>.

Значение должно быть неотрицательным десятичным числом. Если оно не указано или указано неверно, используется максимальное количество записей по умолчанию для браузера.

webkitdirectory

Логический атрибут webkitdirectory, если он присутствует, указывает, что в интерфейсе выбора файлов пользователь может выбирать только каталоги. Дополнительные сведения и примеры см. в описании HTMLInputElement.webkitdirectory.

Изначально реализованный только в браузерах на основе WebKit, атрибут webkitdirectory также поддерживается Microsoft Edge и Firefox 50 и более поздних версий. Однако, несмотря на относительно широкую поддержку, он всё ещё не является стандартным, и его не следует использовать, если есть альтернатива.

Методы

Интерфейс HTMLInputElement, представляющий элементы <input> в DOM, предоставляет следующие методы. Также доступны методы родительских интерфейсов: HTMLElement, Element, Node и EventTarget.

checkValidity()

Возвращает true, если значение элемента проходит проверку допустимости; в противном случае возвращает false и отправляет элементу событие invalid.

reportValidity()

Возвращает true, если значение элемента проходит проверку допустимости; в противном случае возвращает false, отправляет элементу событие invalid и (если событие не отменено) сообщает пользователю о проблеме.

select()

Выделяет всё содержимое элемента <input>, если его содержимое можно выделить. Для элементов, содержимое которых нельзя выделить (например, визуального средства выбора цвета или ввода даты в календаре), этот метод ничего не делает.

setCustomValidity()

Задаёт пользовательское сообщение, которое будет отображаться, если значение элемента ввода недопустимо.

setRangeText()

Заменяет указанную последовательность символов в элементе ввода заданной строкой. Параметр selectMode позволяет управлять тем, как изменяется имеющееся содержимое.

setSelectionRange()

Выделяет указанную последовательность символов в текстовом элементе ввода. Ничего не делает для полей ввода, которые не отображаются как текстовые поля.

showPicker()

Отображает средство выбора браузера для элемента ввода, которое обычно появляется при выборе элемента, но запускает его отображение нажатием кнопки или другим действием пользователя.

stepDown()

Уменьшает значение числового поля ввода на единицу по умолчанию или на указанное количество единиц.

stepUp()

Увеличивает значение числового поля ввода на единицу или на указанное количество единиц.

CSS

Поля ввода относятся к замещаемым элементам и имеют ряд особенностей, не свойственных элементам, не являющимся элементами форм. Существуют CSS-селекторы, позволяющие выбирать элементы управления формы по особенностям их пользовательского интерфейса; такие селекторы также называют псевдоклассами пользовательского интерфейса. Элемент input также можно выбирать по типу с помощью селекторов атрибутов. Кроме того, существуют свойства, которые особенно полезны в этом контексте.

Псевдоклассы пользовательского интерфейса

Псевдоклассы, применимые к элементу <input>:
Псевдокласс Описание
:enabled Любой элемент, который в данный момент включён, может быть активирован (выбран, нажат, в него можно вводить текст и т. д.) или получать фокус и при этом имеет отключённое состояние, в котором его нельзя активировать или сфокусировать.
:disabled Любой элемент, который в данный момент отключён и имеет включённое состояние, то есть в обычных условиях его можно было бы активировать (выбрать, нажать, ввести в него текст и т. д.) или сфокусировать.
:read-only Элемент, который пользователь не может редактировать
:read-write Элемент, который пользователь может редактировать.
:placeholder-shown Элемент, в котором в данный момент отображается текст placeholder; включает элементы <input> и <textarea> с атрибутом placeholder, для которых ещё не задано значение.
:default Элементы формы, выбранные по умолчанию в группе связанных элементов. Соответствует элементам типа ввода checkbox и radio, отмеченным при загрузке или отображении страницы.
:checked Соответствует элементам типа ввода checkbox и radio, которые в данный момент отмечены (а также элементу <option> в элементе <select>, который в данный момент выбран).
:indeterminate Элементы checkbox, для которых JavaScript установил свойство indeterminate в значение true; элементы radio, если ни одна радиокнопка с тем же значением name в форме не отмечена; и элементы <progress> в неопределённом состоянии.
:valid Элементы управления формы, к которым применима проверка ограничений и которые в данный момент являются допустимыми.
:invalid Элементы управления формы, к которым применяется проверка ограничений и которые в данный момент являются недопустимыми. Соответствует элементу управления формы, значение которого не отвечает ограничениям, заданным его атрибутами, например required, pattern, step и max.
:in-range Непустое поле ввода, текущее значение которого находится в пределах диапазона, заданного атрибутами min и max и атрибутом step.
:out-of-range Непустое поле ввода, текущее значение которого НЕ находится в пределах диапазона, заданного атрибутами min и max, или не соответствует ограничению step.
:required Элемент <input>, <select> или <textarea>, для которого задан атрибут required. Соответствует только элементам, для которых можно задать обязательность. Атрибут, указанный для элемента, который не может быть обязательным, не приведёт к совпадению.
:optional Элемент <input>, <select> или <textarea>, для которого НЕ задан атрибут required. Не соответствует элементам, которые не могут быть обязательными.
:blank Элементы <input> и <textarea>, у которых в данный момент нет значения.
:user-invalid Похож на :invalid, но активируется при потере фокуса. Соответствует недопустимому полю ввода, но только после взаимодействия с пользователем, например после получения и потери элементом фокуса или попытки отправить содержащую недопустимый элемент форму.
:open Элементы <input>, которые отображают средство выбора значения (например, <input type="color">), — но только когда элемент находится в открытом состоянии, то есть когда средство выбора отображается.

Пример использования псевдоклассов

Можно задать стиль метки флажка в зависимости от того, отмечен флажок или нет. В этом примере мы задаём свойства color и font-weight для элемента <label>, который непосредственно следует за отмеченным полем ввода. Если input не отмечен, стили не применяются.

input:checked + label {
  color: red;
  font-weight: bold;
}

Селекторы атрибутов

Разные типы элементов управления формы можно выбирать по их атрибуту type с помощью селекторов атрибутов. Селекторы атрибутов CSS выбирают элементы по наличию атрибута или по его значению.

/* matches a password input */
input[type="password"] {
}

/* matches a form control whose valid values are limited to a range of values */
input[min][max] {
}

/* matches a form control with a pattern attribute */
input[pattern] {
}

::placeholder

По умолчанию текст заполнителя отображается полупрозрачным или светло-серым. Псевдоэлемент ::placeholder представляет текст placeholder поля ввода. Его можно стилизовать с помощью ограниченного набора свойств CSS.

::placeholder {
  color: blue;
}

В правиле с ::placeholder в селекторе можно использовать только те свойства CSS, которые применимы к псевдоэлементу ::first-line.

caret-color

Для элементов, связанных с вводом текста, особенно полезно свойство CSS caret-color, позволяющее задавать цвет курсора текстового поля ввода:

HTML

<label for="textInput">Note the red caret:</label>
<input id="textInput" class="custom" size="32" />

CSS

input.custom {
  caret-color: red;
  font:
    16px "Helvetica",
    "Arial",
    sans-serif;
}

Результат

field-sizing

Свойство field-sizing позволяет управлять изменением размеров полей формы (по умолчанию им задаётся предпочтительный размер). С помощью этого свойства можно переопределить поведение по умолчанию и настроить изменение размеров элементов управления формы в соответствии с их содержимым.

Это свойство обычно используют для создания полей формы, размер которых подстраивается под содержимое и увеличивается по мере ввода текста. Оно работает с типами полей ввода, допускающими непосредственный ввод текста (например, text и url), полями ввода типа file и элементами <textarea>.

object-position и object-fit

В некоторых случаях (обычно для нетекстовых полей ввода и специализированных интерфейсов) элемент <input> является замещаемым элементом. В этом случае положение и размер элемента внутри его рамки можно настроить с помощью свойств CSS object-position и object-fit.

Стилизация

Дополнительные сведения о добавлении цвета элементам HTML см. в материале:

  • Применение цвета к элементам HTML с помощью CSS.

См. также:

  • Стилизация HTML-форм
  • Расширенные возможности стилизации HTML-форм и

Дополнительные возможности

>

Метки

Метки необходимы для связывания поясняющего текста с элементом <input>. Элемент <label> содержит пояснительную информацию о поле формы, которая всегда уместна (если не учитывать особенности макета). Использовать элемент <label> для пояснения того, что следует ввести в <input> или <textarea>, всегда полезно.

Связанные метки

Семантическая связь между элементами <input> и <label> полезна для вспомогательных технологий, например программ экранного доступа. Связав их с помощью атрибута for элемента <label>, вы связываете метку с полем ввода так, что программы экранного доступа могут точнее описывать поля ввода пользователям.

Недостаточно разместить обычный текст рядом с элементом <input>. Для удобства использования и обеспечения доступности необходимо добавить явную или неявную <label>:

<!-- inaccessible -->
<p>Enter your name: <input id="name" type="text" size="30" /></p>

<!-- implicit label -->
<p>
  <label>Enter your name: <input id="name" type="text" size="30" /></label>
</p>

<!-- explicit label -->
<p>
  <label for="name">Enter your name: </label>
  <input id="name" type="text" size="30" />
</p>

Первый пример недоступен: между пояснением и элементом <input> нет связи.

Помимо доступного имени, метка увеличивает область нажатия для пользователей мыши и сенсорных экранов. Если связать <label> с <input>, щелчок или касание любого из них переведёт фокус на <input>. При использовании обычного текста в качестве «метки» этого не произойдёт. Включение пояснения в активную область поля ввода полезно для людей с нарушениями моторики.

Веб-разработчикам важно никогда не считать, что люди знают всё то же, что и мы. Разнообразие людей, пользующихся интернетом и, как следствие, вашим сайтом, практически гарантирует, что некоторые посетители будут иметь особенности мышления и/или обстоятельства, из-за которых они будут воспринимать ваши формы совсем иначе, чем вы, если метки не будут чёткими и правильно оформленными.

Заполнители не обеспечивают доступность

Атрибут placeholder позволяет указать текст, который отображается непосредственно в области содержимого элемента <input>, когда она пуста. Для понимания ваших форм пользователь не должен полагаться на текст заполнителя. Это не метка, и его нельзя использовать вместо неё. Заполнитель подсказывает, как должно выглядеть вводимое значение, но не объясняет назначение поля и не содержит инструкции.

Заполнитель не только недоступен для программ чтения с экрана, но и исчезает, как только пользователь вводит любой текст в элемент управления формы или если элемент управления формы уже содержит значение. Браузеры с функциями автоматического перевода страниц могут пропускать атрибуты при переводе, а это значит, что placeholder может остаться непереведённым.

Примечание: По возможности не используйте атрибут placeholder. Если необходимо добавить подпись к элементу <input>, используйте элемент <label>.

Клиентская проверка

Предупреждение: Клиентская проверка полезна, но она не гарантирует, что сервер получит корректные данные. Если данные должны соответствовать определённому формату, всегда проверяйте их также на стороне сервера и возвращайте ответ HTTP 400, если формат неверен.

Помимо использования CSS для стилизации полей ввода на основе состояний пользовательского интерфейса :valid или :invalid, зависящих от текущего состояния каждого поля, как отмечено в разделе Псевдоклассы пользовательского интерфейса выше, браузер выполняет клиентскую проверку при попытке отправить форму. При отправке формы, если какое-либо поле управления формы не проходит проверку ограничений, поддерживающие эту возможность браузеры покажут сообщение об ошибке для первого некорректного поля управления формы: стандартное сообщение, соответствующее типу ошибки, или сообщение, заданное вами.

Некоторые типы полей ввода и другие атрибуты ограничивают допустимые значения для конкретного поля. Например, <input type="number" min="2" max="10" step="2"> означает, что допустимы только числа 2, 4, 6, 8 или 10. Может возникнуть несколько ошибок: например, ошибка rangeUnderflow, если значение меньше 2; rangeOverflow, если оно больше 10; stepMismatch, если значение — число от 2 до 10, но не чётное целое (не соответствует требованиям атрибута step); или typeMismatch, если значение не является числом.

Для типов полей ввода, множество возможных значений которых является периодическим (то есть при достижении наибольшего возможного значения отсчёт начинается заново, а не заканчивается), значения свойств max и min можно поменять местами. Это означает, что диапазон допустимых значений начинается с min, продолжается после перехода к наименьшему возможному значению и заканчивается на max. Это особенно полезно для дат и времени, например, если нужно разрешить диапазон с 8 вечера до 8 утра:

<input type="time" min="20:00" max="08:00" name="overnight" />

Определённые атрибуты и их значения могут приводить к определённой ошибке ValidityState:

Ошибки объекта Validity зависят от атрибутов <input> и их значений:
Атрибут Соответствующее свойство Описание
max validityState.rangeOverflow Возникает, когда значение превышает максимальное значение, заданное атрибутом max
maxlength validityState.tooLong Возникает, когда количество символов превышает число, допустимое свойством maxlength
min validityState.rangeUnderflow Возникает, когда значение меньше минимального значения, заданного атрибутом min
minlength validityState.tooShort Возникает, когда количество символов меньше числа, требуемого свойством minlength
pattern validityState.patternMismatch Возникает, когда указан атрибут pattern с допустимым регулярным выражением, которому не соответствует значение value.
required validityState.valueMissing Возникает, когда присутствует атрибут required, но значение null, либо не выбран переключатель или флажок.
step validityState.stepMismatch Значение не соответствует шагу приращения. По умолчанию шаг приращения равен 1, поэтому, если атрибут step не указан, допустимы только целые числа для type="number". step="any" никогда не вызовет эту ошибку.
type validityState.typeMismatch Возникает, когда значение имеет неверный тип, например адрес электронной почты не содержит @ или URL не содержит протокол.

Если у элемента управления формы нет атрибута required, значения или пустой строки, он не считается некорректным. Даже если присутствуют перечисленные выше атрибуты, пустая строка не приведёт к ошибке, за исключением required.

Мы можем задать ограничения на принимаемые значения, а поддерживающие эту возможность браузеры будут проверять значения формы и сообщать пользователю об ошибке при отправке формы.

Помимо ошибок, описанных в таблице выше, интерфейс validityState содержит логические свойства только для чтения badInput, valid и customError. Объект validity включает:

  • validityState.valueMissing
  • validityState.typeMismatch
  • validityState.patternMismatch
  • validityState.tooLong
  • validityState.tooShort
  • validityState.rangeUnderflow
  • validityState.rangeOverflow
  • validityState.stepMismatch
  • validityState.badInput
  • validityState.valid
  • validityState.customError

Для каждого из этих логических свойств значение true означает, что указанная причина возможной ошибки проверки действительно имеет место. Исключение составляет свойство valid: оно равно true, если значение элемента соответствует всем ограничениям.

При наличии ошибки поддерживающие эту возможность браузеры предупредят пользователя и не позволят отправить форму. Важное замечание: если для пользовательской ошибки задано истинное значение (любое, кроме пустой строки или null), отправка формы будет заблокирована. Если пользовательское сообщение об ошибке отсутствует и ни одно из остальных свойств не равно true, valid будет равно true, и форму можно будет отправить.

function validate(input) {
  let validityState = input.validity;
  if (validityState.valueMissing) {
    input.setCustomValidity("A value is required");
  } else if (validityState.rangeUnderflow) {
    input.setCustomValidity("Your value is too low");
  } else if (validityState.rangeOverflow) {
    input.setCustomValidity("Your value is too high");
  } else {
    input.setCustomValidity("");
  }
}

Последняя строка, в которой пользовательское сообщение проверки корректности устанавливается в пустую строку, крайне важна. Если пользователь допустит ошибку и будет задано состояние некорректности, отправка не удастся, даже если все значения допустимы, пока сообщение не будет null.

Пример пользовательского сообщения об ошибке проверки

Чтобы показать пользовательское сообщение об ошибке, когда поле не проходит проверку, необходимо использовать API проверки ограничений (Constraint Validation API), доступный для элементов <input> (и связанных с ними). Рассмотрим следующую форму:

<form>
  <label for="name">Enter username (upper and lowercase letters): </label>
  <input type="text" name="name" id="name" required pattern="[A-Za-z]+" />
  <button>Submit</button>
</form>

Базовые возможности проверки форм в HTML приведут к показу стандартного сообщения об ошибке, если попытаться отправить форму, не заполнив ни одно допустимое поле, либо указав значение, не соответствующее pattern.

Чтобы вместо этого показывать пользовательские сообщения об ошибках, можно использовать следующий JavaScript:

const nameInput = document.querySelector("input");

nameInput.addEventListener("input", () => {
  nameInput.setCustomValidity("");
  nameInput.checkValidity();
});

nameInput.addEventListener("invalid", () => {
  if (nameInput.value === "") {
    nameInput.setCustomValidity("Enter your username!");
  } else {
    nameInput.setCustomValidity(
      "Usernames can only contain upper and lowercase letters. Try again!",
    );
  }
});

Пример отображается следующим образом:

Кратко:

  • Мы проверяем состояние корректности элемента ввода при каждом изменении его значения, вызывая метод checkValidity() через обработчик события input.
  • Если значение некорректно, возникает событие invalid и запускается функция-обработчик события invalid. Внутри этой функции с помощью блока if () мы определяем, некорректно ли значение из-за того, что оно пустое, или потому, что не соответствует шаблону, а затем задаём пользовательское сообщение об ошибке проверки.
  • В результате, если значение поля ввода некорректно при нажатии кнопки отправки, будет показано одно из пользовательских сообщений об ошибке.
  • Если значение корректно, форма отправится ожидаемым образом. Для этого пользовательское состояние некорректности необходимо сбросить, вызвав setCustomValidity() с пустой строкой. Поэтому мы делаем это каждый раз при возникновении события input. Если этого не сделать, а пользовательское состояние некорректности было задано ранее, поле будет считаться некорректным, даже если при отправке оно содержит допустимое значение.

Примечание: Всегда проверяйте ограничения для вводимых данных как на стороне клиента, так и на стороне сервера. Проверка ограничений не отменяет необходимость проверки на стороне сервера. Некорректные значения всё ещё могут отправляться из старых браузеров или злоумышленниками.

Примечание: Во многих версиях Firefox поддерживался проприетарный атрибут ошибки — x-moz-errormessage, — позволявший задавать пользовательские сообщения об ошибках похожим образом. Начиная с версии 66 он удалён (см. ошибка Firefox 1513890).

Локализация

Допустимые значения для некоторых типов <input> зависят от локали. В одних локалях допустимо число 1,000.00, а в других для ввода этого числа нужно использовать формат 1.000,00.

Firefox использует следующие эвристики для определения локали, по правилам которой проверяются введённые пользователем данные (по крайней мере, для type="number"):

  • Пробует использовать язык, заданный атрибутом lang/xml:lang самого элемента или любого из его родительских элементов.
  • Пробует использовать язык, заданный HTTP-заголовком Content-Language. Или,
  • Если язык не указан, использует локаль браузера.

Специальные возможности

>

Подписи

При добавлении полей ввода необходимо сопровождать их подписями — этого требуют рекомендации по доступности. Они нужны, чтобы пользователи вспомогательных технологий могли понять назначение поля. Кроме того, щелчок или касание подписи переводит фокус на связанный с ней элемент управления формы. Это повышает доступность и удобство использования для зрячих пользователей, увеличивая область, по которой можно щёлкнуть или коснуться, чтобы активировать элемент управления формы. Это особенно полезно (а иногда и необходимо) для переключателей и флажков, которые очень малы. Общие сведения о подписях см. в разделе Подписи.

Ниже приведён пример того, как связать <label> с элементом <input> в стиле, описанном выше. Элементу <input> необходимо задать атрибут id. Затем элементу <label> нужно задать атрибут for, значение которого совпадает со значением атрибута id поля ввода.

<label for="peas">Do you like peas?</label>
<input type="checkbox" name="peas" id="peas" />

Размер

Интерактивные элементы, например поля ввода формы, должны иметь достаточно большую область, чтобы их было легко активировать. Это помогает самым разным людям, в том числе людям с нарушениями моторного контроля и тем, кто использует неточные способы ввода, например стилус или пальцы. Рекомендуется, чтобы минимальный размер интерактивной области составлял 44×44 пикселя CSS.

  • Понимание критерия успеха 2.5.5: размер цели | Понимание WCAG 2.1 от W3C
  • Размер цели и критерий 2.5.5 | Адриан Розелли
  • Быстрая проверка: большие сенсорные цели — проект A11Y

Техническая сводка

Категории содержимого Потоковое содержимое, перечисляемый, отправляемый, сбрасываемый элемент, связанный с формой, фразовое содержимое. Если type не равен hidden, то это элемент, для которого можно задать подпись, и воспринимаемое содержимое.
Допустимое содержимое Отсутствует; это пустой элемент.
Пропуск тегов Должен иметь начальный тег и не должен иметь конечного тега.
Допустимые родители Любой элемент, допускающий фразовое содержимое.
Неявная роль ARIA
  • type=button: button
  • type=checkbox: checkbox
  • type=email
    • без атрибута list: textbox
    • с атрибутом list: combobox
  • type=image: button
  • type=number: spinbutton
  • type=radio: radio
  • type=range: slider
  • type=reset: button
  • type=search
    • без атрибута list: searchbox
    • с атрибутом list: combobox
  • type=submit: button
  • type=tel
    • без атрибута list: textbox
    • с атрибутом list: combobox
  • type=text
    • без атрибута list: textbox
    • с атрибутом list: combobox
  • type=url
    • без атрибута list: textbox
    • с атрибутом list: combobox
  • type=color|date|datetime-local|file|hidden|month|password|time|week: соответствующая роль отсутствует
Допустимые роли ARIA
  • type=button: checkbox, combobox, link, menuitem, menuitemcheckbox, menuitemradio, option, radio, switch, tab
  • type=checkbox: button при использовании с aria-pressed, menuitemcheckbox, option, switch
  • type=image: link, menuitem, menuitemcheckbox, menuitemradio, radio, switch
  • type=radio: menuitemradio
  • type=text без атрибута list: combobox, searchbox, spinbutton
  • type=color|date|datetime-local|email|file|hidden| month|number|password|range|reset|search|submit|tel|url|week или text с атрибутом list: роль role не допускается
Интерфейс DOM HTMLInputElement

Спецификации

Спецификация
HTML>
# the-input-element>

Совместимость с браузерами

Настольные Мобильные
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari для iOS Samsung Internet WebView для Android WebView для iOS
input 1 12
1До Firefox 89 для изменения содержимого элементов <input> с помощью команд Document.execCommand() требуются обходные решения (см. bug 1220696).
≤12.1 1 18
4До Firefox для Android 89 для изменения содержимого элементов <input> с помощью команд Document.execCommand() требуются обходные решения (см. bug 1220696).
≤12.1 1 1.0 1 1
accept 1 12 1 ≤12.1 1 18 4 ≤12.1
1Не поддерживает тип MIME audio/*. См. bug 242110.
1.0 4.4
1Не поддерживает тип MIME audio/*. См. bug 242110.
align 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4 1
alpha Нет Нет предварительная версия Нет 18.4 Нет Нет Нет 18.4 Нет Нет 18.4
alt 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4 1
autocomplete 14 12 4 ≤12.1 6 18 4 ≤12.1 6 1.0 4.4 6
capture Нет Нет Нет Нет Нет 25 79 14 10 1.5 4.4 10
checked 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4 1
colorspace Нет Нет предварительная версия Нет 18.4 Нет Нет Нет 18.4 Нет Нет 18.4
dirname 17 79 116 ≤12.1 6 18 116 ≤12.1 6 1.0 4.4 6
disabled 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4 1
form 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4 1
formaction 9 12 4 ≤12.1 5 18 4 ≤12.1 4.2 1.0 3 4.2
formenctype 9 12 4 ≤12.1 5 18 4 ≤12.1 4.2 1.0 3 4.2
formmethod 9 12 4 ≤12.1 5 18 4 ≤12.1 4.2 1.0 3 4.2
formnovalidate 4 12 4 ≤12.1 5 18 4 ≤12.1 4 1.0 4.4 4
formtarget 9 12 4 ≤12.1 5 18 4 ≤12.1 4.2 1.0 3 4.2
max 4 12 16 ≤12.1 5 18 16 ≤12.1 4 1.0 4.4 4
maxlength 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4 1
min 4 12 16 ≤12.1 5 18 16 ≤12.1 4 1.0 4.4 4
minlength 40 17 51 27 10.1 40 51 27 10.3 4.0 40 10.3
multiple 2 12 3.6 ≤12.1 4 18 4 ≤12.1 3.2 1.0 4.4 3.2
name 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4 1
pattern 4 12 4 ≤12.1 5 18 4 ≤12.1 4 1.0 4.4 4
placeholder 3 12 4 ≤12.1 4 18 4 ≤12.1 3.2 1.0 4.4 3.2
popovertarget 114 114 125 100 17 114 125 76 17 23.0 114 17
popovertargetaction 114 114 125 100 17 114 125 76 17 23.0 114 17
readonly 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4 1
required 4 12 4 ≤12.1 5 18 4 ≤12.1 4 1.0 4.4 4
size 1 12 1 ≤12.1 1 18 4 14 1 1.0 4.4 1
src 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4 1
step 5 12 16 ≤12.1 5 18 16 ≤12.1 4 1.0 4.4 4
switch Нет Нет Нет Нет 17.4 Нет Нет Нет 17.4 Нет Нет 17.4
type_button 1 12 1 15 1 18 4 14 1 1.0 4.4 1
type_checkbox 1 12 1 15 1 18 4 14 1 1.0 4.4 1
type_color 20 14 29 12 12.1 25
27Firefox для Android не позволяет пользователю выбирать произвольный цвет — доступны только предварительно заданные варианты.
12 12.2 1.5 4.4 12.2
type_date 20 12 57 11 14.1 25 57 11 5 1.5 4.4 5
type_datetime-local 20 12
93Отображается только средство выбора даты, без средства выбора времени; см. ошибку 1726107 и ошибку 1726108.
11
14.1Safari отображает только средство выбора даты и не показывает средство выбора времени.
25
93Отображается только средство выбора даты, без средства выбора времени; см. ошибку 1726107 и ошибку 1726108.
11 5 1.5 4.4 5
type_email 5 12 1 11 5 18 4 11
3["Не выполняет проверку, а предлагает специальную клавиатуру «email», упрощающую ввод адресов электронной почты.", "На специальной клавиатуре «email» нет клавиши запятой, поэтому пользователи не могут ввести несколько адресов электронной почты.", "Автоматически применяет стиль по умолчанию opacity: 0.4, чтобы отключить текстовые элементы <input>, в том числе элементы типа 'email'. Другие основные браузеры в настоящее время не используют такой стиль по умолчанию."]
1.0 4.4
3["Не выполняет проверку, а предлагает специальную клавиатуру «email», упрощающую ввод адресов электронной почты.", "На специальной клавиатуре «email» нет клавиши запятой, поэтому пользователи не могут ввести несколько адресов электронной почты.", "Автоматически применяет стиль по умолчанию opacity: 0.4, чтобы отключить текстовые элементы <input>, в том числе элементы типа 'email'. Другие основные браузеры в настоящее время не используют такой стиль по умолчанию."]
type_file 1 12
1Во всех современных браузерах можно как задавать, так и получать значение HTMLInputElement.files; последним эту возможность добавил Firefox в версии 57 (см. ошибку 1384030).
11 1 18 4 11 1 1.0 4.4 1
type_hidden 1 12 1 2 1 18 4 14 1 1.0 4.4 1
type_image 1 12 1 15 1 18 4 14 1 1.0 4.4 1
type_month 20 12 Нет 11
НетТип input распознается, но элемент управления для выбора месяца отсутствует. См. ошибку 200416.
25 18 14 ≤11.3 1.5 4.4 ≤11.3
type_number
7Не позволяет пользователям вводить нечисловые символы.
12
29Позволяет пользователям вводить нечисловые символы; при этом value содержит пустую строку.
15Не позволяет пользователям вводить нечисловые символы.
5.1Позволяет пользователям вводить нечисловые символы; при этом value содержит пустую строку.
18Не позволяет пользователям вводить нечисловые символы.
29Позволяет пользователям вводить нечисловые символы; при этом value содержит пустую строку.
14Не позволяет пользователям вводить нечисловые символы.
5Позволяет пользователям вводить нечисловые символы; при этом value содержит пустую строку.
1.0Не позволяет пользователям вводить нечисловые символы.
4.4Не позволяет пользователям вводить нечисловые символы.
5Позволяет пользователям вводить нечисловые символы; при этом value содержит пустую строку.
type_password 1 12 1 2 1 18 4 14 1 1.0 4.4 1
type_radio 1 12 1 15 1 18 4 14 1 1.0 4.4 1
type_range 4 12 23 11 3.1 57 52 11 5 7.0 4.4
2–4.4Android WebView до Chromium распознает тип range, но не реализует специальный элемент управления для диапазона.
5
type_reset 1 12
1В отличие от других браузеров, Firefox по умолчанию сохраняет динамическое отключенное состояние элемента <button> при загрузке новых страниц. Чтобы управлять этой функцией, используйте атрибут autocomplete.
15 1 18
4В отличие от других браузеров, Firefox для Android по умолчанию сохраняет динамическое отключенное состояние элемента <button> при загрузке новых страниц. Чтобы управлять этой функцией, используйте атрибут autocomplete.
14 1 1.0 4.4 1
type_search 5 12 4 10.6 5 18 4 14 4.2 1.0 4.4 4.2
type_submit 1 12
1В отличие от других браузеров, Firefox по умолчанию сохраняет динамическое отключенное состояние элемента <button> при загрузке новых страниц. Чтобы управлять этой функцией, используйте атрибут autocomplete.
15 1 18
4В отличие от других браузеров, Firefox для Android по умолчанию сохраняет динамическое отключенное состояние элемента <button> при загрузке новых страниц. Чтобы управлять этой функцией, используйте атрибут autocomplete.
14 1 1.0 4.4 1
type_tel
3Тип поля не имеет особого поведения.
12 4 11
4Тип поля не имеет особого поведения.
18 4 11 3 1.0 4.4 3
type_text 1 12 1 15 1 18 4 14 1 1.0 4.4 1
type_time 20 12 57 10 14.1 25 57 10.1 5 1.5 4.4 5
type_url 1 12 1 11 1 18 4 14 1 1.0 4.4 1
type_week 20 12 Нет 11 Нет 25 18 14 18.2 1.5 4.4 18.2
usemap 1 12 1 ≤12.1 1 18 4 ≤12.1 1 1.0 4.4 1
webkitdirectory 7 13 50 15 11.1 132
131–132["В Chrome для Android 131 выбор каталога приводит к сбою браузера (см. ошибку 376834374).", "До версии 131 пользователи не могут выбирать каталоги, только отдельные файлы (см. ошибку 40248532."]
141 87
18.4До версии 18.4 атрибут можно установить, но пользователи не могут выбирать каталоги, только отдельные файлы (см. ошибку 271705).
29.0 132
131–132["В Chrome для Android 131 выбор каталога приводит к сбою браузера (см. ошибку 376834374).", "До версии 131 пользователи не могут выбирать каталоги, только отдельные файлы (см. ошибку 40248532."]
18.4До версии 18.4 атрибут можно установить, но пользователи не могут выбирать каталоги, только отдельные файлы (см. ошибку 271705).

См. также

  • Свойство CSS appearance
  • Ваша первая HTML-форма
  • Как структурировать HTML-форму
  • Встроенные элементы управления форм
  • Отправка данных формы
  • Проверка ограничений формы
  • Стилизация HTML-форм

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API