Атрибут formmethod тега <button>
Описание
Атрибут formmethod определяет HTTP-метод, который будет использоваться при отправке формы. Этот атрибут переопределяет метод, указанный в атрибуте method родительской формы, но только для конкретной кнопки отправки.
<form action="/process" method="post">
<input type="text" name="data">
<button type="submit">Отправить POST</button>
<button type="submit" formmethod="get">Поиск GET</button>
</form>
Допустимые значения:
| Значение | Метод HTTP | Типичное использование |
|---|---|---|
post |
POST | Отправка данных, создание ресурсов |
get |
GET | Получение данных, поисковые запросы |
dialog |
- | Закрытие диалогового окна <dialog> |
Практический пример с разными методами:
<form action="/api/data" method="post">
<input type="text" name="search" placeholder="Поиск...">
<button type="submit" formmethod="get">
Поиск (GET)
</button>
<button type="submit">
Сохранить (POST)
</button>
</form>
Комбинация с другими атрибутами:
<form>
<input type="text" name="query">
<button type="submit"
formaction="/search"
formmethod="get"
formtarget="_blank">
Поиск в новом окне
</button>
</form>
Важные замечания:
- Работает только с кнопками типа
submit - Метод GET не должен использоваться для конфиденциальных данных
- При GET-запросе данные формы добавляются в URL
- Для RESTful API можно использовать JavaScript для отправки PUT/DELETE
Пример с диалоговым окном:
<dialog id="settings-dialog">
<form method="dialog">
<p>Сохранить изменения?</p>
<button type="submit">Да</button>
<button type="submit" formmethod="dialog" value="cancel">
Нет
</button>
</form>
</dialog>
Примечание: Используйте разные методы отправки для разных сценариев: GET - для безопасных операций чтения, POST - для изменяющих операций. Это соответствует принципам REST.
Совместимость с HTML5:
<form>
<button type="submit"
formmethod="post"
formnovalidate>
Отправить без проверки
</button>
</form>