<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 | Элемент управления для ввода даты и времени без часового пояса. В поддерживающих браузерах при активации открывается средство выбора даты или числовые колёсики для выбора даты и времени. | |
Поле для редактирования адреса электронной почты. Выглядит как поле ввода 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пуст, значение элемента не отправляется вместе с формой! (Отключённые элементы управления, невыбранные радиокнопки, неустановленные флажки и кнопки сброса также не отправляются.)Есть два особых случая:
-
_charset_: Если используется в качестве имени элемента<input>типа «скрытый», значениеvalueэлемента ввода автоматически задаётся пользовательским агентом и соответствует кодировке символов, используемой для отправки формы. -
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и описанное в нашем руководстве по регулярным выражениям. Не указывайте косые черты вокруг текста шаблона. При компиляции регулярного выражения:- шаблон неявно обрамляется
^(?:и)$, поэтому соответствие проверяется для всего значения ввода, то есть^(?:<pattern>)$. - задаётся флаг
'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и задаёт, какая часть поля ввода отображается. По сути, результат такой же, как при задании свойства CSSwidth, но с некоторыми особенностями. Единица измерения значения зависит от типа поля ввода. Дляpasswordиtextэто количество символов (или единицem); значение по умолчанию —20. Для остальных типов единицей измерения служат пиксели (или единицыpx). Свойство CSSwidthимеет приоритет над атрибутом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 во время редактирования поля; она используется для выбора подходящей подписи этой клавиши на виртуальной клавиатуре. Этот атрибут устарел; вместо него используйте |
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 также можно выбирать по типу с помощью селекторов атрибутов. Кроме того, существуют свойства, которые особенно полезны в этом контексте.
Псевдоклассы пользовательского интерфейса
| Псевдокласс | Описание |
|---|---|
: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 см. в материале:
См. также:
Дополнительные возможности
>Метки
Метки необходимы для связывания поясняющего текста с элементом <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:
| Атрибут | Соответствующее свойство | Описание |
|---|---|---|
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.valueMissingvalidityState.typeMismatchvalidityState.patternMismatchvalidityState.tooLongvalidityState.tooShortvalidityState.rangeUnderflowvalidityState.rangeOverflowvalidityState.stepMismatchvalidityState.badInputvalidityState.validvalidityState.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 |
|
| Допустимые роли ARIA |
|
| Интерфейс 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.0 | 4.4 | ||
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.42–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 |
132131–132["В Chrome для Android 131 выбор каталога приводит к сбою браузера (см. ошибку 376834374).", "До версии 131 пользователи не могут выбирать каталоги, только отдельные файлы (см. ошибку 40248532."] |
141 | 87 | 18.4До версии 18.4 атрибут можно установить, но пользователи не могут выбирать каталоги, только отдельные файлы (см. ошибку 271705). |
29.0 |
132131–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