foundation
Нативные controls и валидация
Используйте типы input, ограничения, required, pattern, состояния validity и progressive enhancement.
Нативные form controls дают keyboard behavior, мобильные клавиатуры, состояния валидации, семантику submit и hooks для a11y. Типы input, `required`, `min`/`max`, `pattern`, `disabled`, `readonly`, `fieldset` и Constraint Validation API — baseline до кастомного JavaScript.
<form>
<label>Email <input name="email" type="email" required></label>
<button type="submit">Сохранить</button>
<button type="button">Отмена</button>
</form>
`type` у button важен: submit отправляет форму, button — нет. Задавайте явно.
На интервью: зачем нужны `email`, `number`, `date`, группы radio и типы кнопок.
Типовые ошибки: div вместо control теряет keyboard; client validation — UX, не security; сервер валидирует снова.
Компромисс: кастомные виджеты против скорости, a11y и мобильных клавиатур нативных controls — усиливайте нативное, прежде чем заменять.
Чеклист:
- Конкретные типы input.
- Явные типы button.
- Встроенная constraint validation.
- Повторная валидация на сервере.