Вебсправочник
Справочник HTML

Атрибут formaction: отдельный адрес для кнопки отправки

Formaction позволяет конкретной кнопке отправить форму по адресу, отличающемуся от action формы. Это удобно для двух явно разных действий с одним набором полей.

Назначение

Formaction позволяет конкретной кнопке отправить форму по адресу, отличающемуся от action формы. Это удобно для двух явно разных действий с одним набором полей.

Как это работает

Атрибут применяется к подходящей кнопке отправки, а не к любому элементу. В примере две кнопки имеют понятные названия и значения action. Оба серверных адреса являются учебными и требуют собственной реализации.

Пример

<form action="/demo-save" method="post"><label for="fa-title">Название</label><input id="fa-title" name="title" required><button type="submit" name="action" value="save">Сохранить</button><button type="submit" name="action" value="preview" formaction="/demo-preview">Предпросмотр</button></form>

Что должно получиться

Обычная кнопка использует /demo-save, кнопка предпросмотра — /demo-preview. Различие определяется выбранным инициатором отправки, а не последней кнопкой в исходнике.

Граница применения и частая ошибка

Formaction не делает обработчики безопасными автоматически. Оба маршрута должны проверять полномочия, входные данные и необходимые защитные токены. Пользователь может изменить адрес и поля запроса, поэтому нельзя доверять маршруту только из-за HTML.

Самостоятельная проверка

На своём тестовом сервере сравните URL и тело двух отправок через Network. Проверьте отправку клавишей Enter: инициатор может отличаться от ожидаемого. Для программной отправки используйте подходящий submitter с requestSubmit.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.