Основы форм
Нажми на слово Email рядом с хорошо сделанным полем формы, и курсор прыгнет в поле. Эта маленькая деталь и есть работа элемента label.
Что делает форма
Строки поиска, страницы регистрации и оформления заказа являются формами. Элемент <form> группирует элементы управления, и когда посетитель отправляет форму, браузер посылает name каждого элемента вместе с его значением по адресу из атрибута action формы. Атрибут method говорит, как: get кладёт данные в адрес, что подходит для поиска, который можно сохранить в закладки, а post отправляет их в теле запроса, что подходит для всего, что меняет данные, например заказа. HTML строит форму, а программа на сервере решает, что делать с пришедшими данными.
<form action="/subscribe" method="post"> <label for="name">Name</label> <input id="name" name="name" type="text" autocomplete="name"> <label for="email">Email</label> <input id="email" name="email" type="email" required autocomplete="email"> <button type="submit">Subscribe</button> </form>
Каждому элементу управления нужна подпись
Элемент <label> даёт имя элементу управления. Свяжи их, дав полю id, а подписи совпадающий атрибут for, или поместив поле внутрь подписи. Связь даёт две вещи. Экранный диктор читает подпись, когда поле получает фокус, и пользователь слышит «Email, редактируемый текст», а не просто «редактируемый текст». А щелчок по подписи ставит фокус в поле или отмечает флажок, что даёт каждому, особенно на телефоне, цель побольше. placeholder (серая подсказка внутри поля) подписью не является: он исчезает, как только начинаешь печатать, часто плохо контрастирует, а некоторые вспомогательные технологии его игнорируют.
Типы полей
Атрибут type у <input> меняет элемент управления. text является однострочным полем по умолчанию. email, tel и url выглядят похоже, но на телефонах показывают подходящую клавиатуру, а браузер проверяет, что адрес почты имеет правильную форму. number принимает цифры, и у него могут быть min и max. password скрывает вводимое, date предлагает календарь, а checkbox и radio являются полями для отметки. Для длинного текста используй <textarea>, а для выбора из списка <select> с элементами <option> внутри.
Группировка вариантов
Переключатели (radio), относящиеся к одному вопросу, имеют одинаковый name, и выбрать можно только один из них. Оберни группу в <fieldset>, а вопрос помести в <legend>. Тогда экранный диктор прочитает вопрос вместе с каждым вариантом: «Loaf size, Small, переключатель, 1 из 2». У каждого переключателя всё равно своя подпись.
Кнопки и встроенные проверки
<button> внутри формы по умолчанию отправляет её. Запись type="submit" делает это явным, а type="button" создаёт кнопку, которая ничего не делает, пока JavaScript не даст ей работу. Перед отправкой браузер может проверить поля за тебя. required останавливает форму, если поле пустое, type="email" отвергает текст без @, а minlength, min и max задают пределы. Эти проверки помогают посетителю исправить ошибки заранее, но выполняются в его браузере и их можно обойти, поэтому сервер должен проверить данные ещё раз. Атрибут autocomplete со значениями вроде email или name позволяет браузеру подставить сохранённые данные. Это экономит набор всем и особенно помогает людям с трудностями движения или памяти.
| form | Группирует элементы управления и отправляет их имена и значения |
| label | Даёт имя элементу управления; for совпадает с id поля |
| name | Ключ, который отправляется на сервер вместе со значением |
| required | Поле нужно заполнить перед отправкой |
| fieldset / legend | Группирует связанные элементы управления под одним вопросом |
| placeholder | Подсказка внутри поля; не подпись |
| method="post" | Отправляет данные в теле запроса; для изменений, например заказов |
- У label стоит for="phone". К какому полю она относится?
- К полю с id="phone"
- К полю с name="phone"
- К следующему полю, какой бы ни был у него id
- Почему placeholder недостаточно в роли подписи?
- Он исчезает при наборе и часто плохо контрастирует
- Это неправильный HTML
- Он ничего не отправляет
- Какой тип поля показывает на телефоне клавиатуру для почты и проверяет @?
- Два переключателя должны исключать друг друга. Что у них должно быть общим?
- name
- id
- value
- Какой элемент хранит вопрос для fieldset?
- legend
- caption
- label
- Какой метод подходит для формы поиска, которую можно сохранить в закладки?
- get
- post
- Браузер проверяет обязательные поля. Нужно ли серверу проверять ещё раз?
- Да, проверки браузера можно обойти
- Нет, браузера достаточно
- Только для паролей
- Какой элемент подходит для многострочного сообщения?
- textarea
- input type="text"
- select
- Что делает щелчок по правильно связанной подписи?
- Ставит фокус в её поле или отмечает флажок
- Отправляет форму
- Очищает поле
- Какой атрибут позволяет браузеру подставить сохранённый адрес почты?
- autocomplete="email"
- placeholder="email"
- value="email"
- form отправляет имя и значение каждого элемента управления на action методом get или post.
- У каждого элемента управления есть label (for совпадает с id); placeholder подписью не является.
- Выбирай правильный type; группируй переключатели через fieldset и legend; сервер проверяет ещё раз.
Источники курса (10)
- WHATWG, HTML Living Standard (html.spec.whatwg.org, checked 2026-10-17)
- MDN Web Docs, Learn web development: Structuring content with HTML, and the HTML element reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Structuring_content and developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements, checked 2026-10-17)
- MDN, HTML images (alt text guidance, checked 2026-10-17)
- W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree, checked 2026-10-17)
- CERN, A short history of the Web (home.cern/science/computing/the-birth-of-the-web/short-history-web/, checked 2026-10-17)
- W3C and WHATWG memorandum of understanding, 28 May 2019 (w3.org/2019/04/WHATWG-W3C-MOU.html, checked 2026-10-17)
- W3C, Using ARIA, first rule of ARIA use (w3.org/TR/using-aria/, checked 2026-10-17)
- W3C Markup Validation Service (validator.w3.org, checked 2026-10-17)
- MDN, Viewport meta element (checked 2026-10-17)
- Every code exercise was checked with a Playwright probe against a reference solution.
Проверено: 2026-10-17