PassFront
  1. PassFront
  2. База знаний
  3. Формы и контролы

Как связать теги label и input?

Формы и контролы

label связывают с input атрибутом `for`, совпадающим с `id` поля, или вложением поля внутрь label.

Через for и id

<label for="email">Email</label>
<input id="email" type="email" name="email" />

Вложением

<label>
  Email
  <input type="email" name="email" />
</label>

Зачем связывать

  • Скринридер объявит подпись при фокусе на поле.
  • Клик по подписи ставит фокус в поле (а для чекбокса — переключает его) — больше область клика.
  • Автозаполнение браузера лучше понимает поле.

В React

Атрибут называется htmlFor, а уникальный id генерируют через useId():

const id = useId();
<label htmlFor={id}>Email</label>
<input id={id} type="email" />

Чего не делать

Не заменять label атрибутом placeholder — подсказка исчезает при вводе и плохо читается скринридерами.

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

<label for="id"> + <input id="id"> или поле внутри label; это даёт озвучивание подписи и фокус по клику, в React — htmlFor и useId.

Подробнее: MDN — label

Другие вопросы раздела