Кратко
СкопированоТег <input>
позволяет создавать интерактивные элементы на сайте — поле для ввода текста, кнопка, ползунок, переключатель и другие.
Пример
СкопированоСоздадим поле для ввода текста в одну строчку и ограничим количество допустимых символов в нём:
<label for="name">Введите название (от 4 до 8 символов):</label><input type="text" id="name" name="name" required minlength="4" maxlength="8" size="10">
<label for="name">Введите название (от 4 до 8 символов):</label> <input type="text" id="name" name="name" required minlength="4" maxlength="8" size="10" >
Как понять
Скопировано<input>
— это контейнер для интерактивных элементов, с помощью которых пользователь может ввести данные, что-то выбрать, поставить галочку или нажать кнопку.
Как пишется
СкопированоЕсли хочется, чтобы введённые или выбранные в <input>
данные отправились на сервер, нужно поместить этот тег в <form>
либо связать этот элемент с формой через атрибут id
.
Атрибут type
определяет, какой вид примет элемент <input>
и какую функцию будет выполнять: например, для создания поля с паролем мы напишем type
, чтобы сделать переключатель — type
, а для создания кнопки — type
.
Благодаря огромному количеству вариантов и функций, которые задаются через type
и другие атрибуты, <input>
стал одним из самых полезных и сложных тегов в HTML.
Атрибуты
СкопированоК элементу можно применить все глобальные атрибуты.
type
Скопированоtype
— тип элемента <input>
: текстовое поле, кнопка, флажки выбора и так далее. Если не указать его, то элемент будет обычным текстовым полем text
в одну строку.
Типы для ввода данных разных форматов:
text
— поле для ввода текста в одну строку. Если попробовать вставить текст из нескольких абзацев, то они всё равно сложатся в одну строчку.email
— поле для ввода имейла. Браузер проверит, есть ли в нём знак «@» и домен.search
— поле для поиска.tel
— поле для ввода номера телефона.url
— поле для ввода URL-адреса.password
— ввод пароля. По мере ввода символы будут меняться на звёздочки ***. Можно задать минимальное и максимальное количество символов с помощью атрибутовminlength
иmaxlength
.number
— ввод числа.
Типы для различных кнопок:
submit
— простая кнопка для отправки формы.button
— обычная кнопка.image
— кнопка «Отправить» в виде картинки. Чтобы задать адрес картинки, используйте атрибутsrc
, а для альтернативного текста — атрибутalt
. Чтобы скорректировать размер изображения в пикселях, используйте атрибутыheight
иwidth
.reset
— кнопка, которая сбрасывает всё, что пользователь ввёл в поля текущей формы ранее.
Типы для ввода дат:
date
— ввод даты без времени: год, месяц и дата.datetime
— ввод даты и времени в текущем часовом поясе, когда зоны UTC не указываются.- local month
— ввод месяца и года, без указания часового пояса.week
— ввод номера недели.time
— ввод времени без указания часового пояса.
Элементы форм:
checkbox
— флажки, или чекбокс, с несколькими вариантами на выбор.radio
— круглая кнопка-переключатель для выбора одного из нескольких вариантов.range
— ползунок для выбора чисел из заданного диапазона.color
— виджет для выбора цвета. Иногда его называют колорпикер (от английского colorpicker).file
— выбор файла для отправки.
И отдельно стоит значение hidden
. Поле ввода с этим значением атрибута type
не видно на странице, но в то же время оно отправляет своё значение на сервер.
Большое преимущество установки правильного значения для type
— в мобильных браузерах будет появляться «специальная» клавиатура, упрощающая и улучшающая пользовательский опыт. Так, для <input type
у пользователя отобразится клавиатура, содержащая лишь цифры и специальные символы, нужные для корректного ввода номера телефона. Пример такой клавиатуры можно увидеть на картинке ниже:
value
Скопированоvalue
— значение элемента <input>
, которое отправляется на сервер в формате «имя=значение». Имя задаётся атрибутом name
, а значение — value
. Например, <input type
.
- Если
<input>
— кнопка (<input type
), то= "button | reset | submit"> value
будет надписью на ней. Значениеvalue
для кнопки (<input type
) не передаётся на сервер.= "reset"> - Если
<input>
— кнопка в виде картинки (<input type
), то= "image"> value
будет передано в виде двух значений координат нажатия относительно изображенияимя
и. x имя
, где. y имя
— это значение атрибутаname
. - Если — текстовое поле (
<input type
), то= "password | text"> value
задаст текст, который появится в этом поле при загрузке страницы. Пользователь сможет его удалить или отредактировать. - Если вы вставляете флажок или переключатель (
<input type
), то= "checkbox | radio"> value
задаст уникальное значение элемента, по умолчаниюon
.
Прочие атрибуты
Скопированоname
— уникальное имя элемента. Обычно имя нужно, чтобы связать<input>
с формой и отправить данные на сервер.required
— делает поле для ввода обязательным для заполнения. Пользователь не сможет нажать «Отправить», пока не введёт сюда данные. А если попробует, то браузер выведет сообщение о необходимости заполнить поле.disabled
— отключает элемент. Пользователь не сможет, например, ввести текст или выбрать нужный параметр, а сам элемент будет отображаться в сером цвете, как неактивный.autocomplete
— разрешает автозаполнение. Автозаполнение — это когда браузер предлагает сохранить, например, пароль или номер банковской карты, чтобы данные подставлялись при следующем входе. Подробнее можно прочитать в статье проautocomplete
.autofocus
— фокусируется на элементе<input>
сразу после загрузки страницы. Это значит, что пользователю не нужно специально нажимать на этот элемент, чтобы начать в нём что-то писать. В фокусе может быть только один элемент на странице. Но это не может быть элемент типаhidden
.form
— связывает отдельно стоящий элемент<input>
с формой. Для этого укажите в качестве значения имя идентификатора, который задан нужному тегу<form>
. Например, такform
. Этот атрибут позволяет разместить= "special - form" <input>
в любом месте на странице за пределами<form>
. Если его не указать, элемент<input>
будет связан с ближайшей формой.list
— связывает<input>
с элементом<datalist>
через его ID. В элементе<datalist>
указывают значения, которые пользователь может выбрать, когда вбивает текст в пустое поле. Допустим, вы ввели букву «М» в поле ввода города, и браузер предложил варианты из<datalist>
: «Москва», «Минск» и так далее. Этот атрибут не подходит для таких типов<input>
, какhidden
,password
,checkbox
,radio
,file
и любых кнопок.readonly
— не позволяет пользователю как-либо изменять элемент, оставляя его при этом рабочим. Применимо только для текстовых полей.step
— указывает шаг, с которым будет изменяться значение поля. Задаётся в числовом формате и работает с любым из перечисленных типов:number
,range
,date
иdatetime
.- local min
,max
— указывают минимальные и максимальные числовые значения соответственно для полей с типамиnumber
иrange
. Минимальные и максимальные значения даты в форматеГГГГ
для полей с типами- ММ - ДД date
иdatetime
.- local size
— указывает ширину поля для ввода в символах.placeholder
— это короткая подсказка (слово или фраза), предназначенная для помощи пользователю при вводе данных, когда поле для ввода пустует.pattern
— задаёт регулярное выражение, по которому проверяется значение элемента<input>
.multiple
— указывает, что пользователь может выбрать больше одного значения.
Подсказки
Скопировано💡 Чтобы даже те, кто использует специальные средства для чтения с экрана (скринридеры), могли точно понять, что делает тот или иной <input>
, используйте этот тег в паре с label
.
Ещё пример
СкопированоВот так будет выглядеть простая форма, собранная из нескольких элементов <input>
. Мы поместили их все в контейнер <form>
, чтобы данные, которые введёт пользователь, можно было отправить на сервер:
<form method="get" action="../result"> <label class="input-label"> <span class="input-title">Текстовое поле в одну строчку:</span> <input class="input" type="text" size="40" name="one-line" > </label> <label class="input-label"> <span class="input-title">Поле для пароля:</span> <input class="input" type="password" size="40" name="one-line-password" > </label> <fieldset class="radio-set"> <legend class="visually-hidden">Радиокнопки:</legend> <span class="radio-legend" aria-hidden="true">Радиокнопки:</span> <div class="radio-container"> <label class="radio-label"> <input class="radio" type="radio" name="browser" value="ie" id="ie" > <span class="radio-title">Вариант 1</span> </label> <label class="radio-label"> <input class="radio" type="radio" name="browser" value="opera" id="opera" > <span class="radio-title">Вариант 2</span> </label> <label class="radio-label"> <input class="radio" type="radio" name="browser" value="firefox" id="firefox" > <span class="radio-title">Вариант 3</span> </label> </div> </fieldset> <label class="input-label"> <span class="input-title">Большое текстовое поле:</span> <textarea class="input input-textarea" name="comment" cols="40" rows="3" > </textarea> </label> <div class="buttons"> <input type="reset" value="Очистить" class="button button-blue" > <input type="submit" value="Отправить" class="button button-orange" disabled > </div></form>
<form method="get" action="../result"> <label class="input-label"> <span class="input-title">Текстовое поле в одну строчку:</span> <input class="input" type="text" size="40" name="one-line" > </label> <label class="input-label"> <span class="input-title">Поле для пароля:</span> <input class="input" type="password" size="40" name="one-line-password" > </label> <fieldset class="radio-set"> <legend class="visually-hidden">Радиокнопки:</legend> <span class="radio-legend" aria-hidden="true">Радиокнопки:</span> <div class="radio-container"> <label class="radio-label"> <input class="radio" type="radio" name="browser" value="ie" id="ie" > <span class="radio-title">Вариант 1</span> </label> <label class="radio-label"> <input class="radio" type="radio" name="browser" value="opera" id="opera" > <span class="radio-title">Вариант 2</span> </label> <label class="radio-label"> <input class="radio" type="radio" name="browser" value="firefox" id="firefox" > <span class="radio-title">Вариант 3</span> </label> </div> </fieldset> <label class="input-label"> <span class="input-title">Большое текстовое поле:</span> <textarea class="input input-textarea" name="comment" cols="40" rows="3" > </textarea> </label> <div class="buttons"> <input type="reset" value="Очистить" class="button button-blue" > <input type="submit" value="Отправить" class="button button-orange" disabled > </div> </form>
На практике
Скопированосоветует Скопировано
🛠 У <input>
есть несколько полезных CSS-псевдоклассов. Например, <input>
может иметь разные стили в обычном, сфокусированном и выключенном виде. А если между этими видами добавлять анимацию, можно сделать даже красиво. Например, как поля в Bootstrap, когда ты нажимаешь на <input>
, он начинает плавно подсвечиваться обводкой.
🛠 Если вы используете <input type
или <input type
, можно сами инпуты вообще скрыть: переключение будет работать при нажатии на лейбл. Так можно сделать очень красивые чекбоксы и радиокнопки на чистом CSS. Например, я как-то сделал чекбоксы на сайте в стиле классических переключалок из iOS.