Атрибут formnovalidate: отдельная отправка без нативной проверки
Formnovalidate позволяет одной кнопке пропустить интерактивную проверку ограничений формы. Такой сценарий может подходить для сохранения неполного черновика при сохранении строгой проверки публикации.
Назначение
Formnovalidate позволяет одной кнопке пропустить интерактивную проверку ограничений формы. Такой сценарий может подходить для сохранения неполного черновика при сохранении строгой проверки публикации.
Как это работает
Разместите атрибут только на кнопке черновика. У обычной кнопки публикации проверка required остаётся активной, если вся форма не имеет novalidate. Примеру нужен отдельный тестовый обработчик /demo-draft.
Пример
<form action="/demo-draft" method="post"><label for="draft-title">Название</label><input id="draft-title" name="title" required><button type="submit" name="mode" value="draft" formnovalidate>Сохранить черновик</button><button type="submit" name="mode" value="publish">Проверить публикацию</button></form>
Что должно получиться
Пустое поле может пройти через кнопку черновика без нативной остановки, но кнопка публикации проверяет обязательность. Сервер должен различать режимы и отдельно решать, какие неполные данные допустимы.
Граница применения и частая ошибка
Клиентский mode нельзя считать доверенным разрешением публикации. Атрибут не отменяет ограничения базы и не защищает от вредоносных значений. Пропуск проверки оправдан только когда неполное состояние действительно поддерживается приложением.
Самостоятельная проверка
Сравните обе кнопки с пустым и заполненным названием. Затем проверьте серверный отказ на недопустимый режим. Убедитесь, что сообщение «черновик сохранён» не показывается до подтверждения успешной записи.