Атрибут formmethod тега <button> — метод надсилання форми


автор: с3с

Загальний опис

автор: NagarD

Нотатка

Про метод "get":

  • він додає форм-дані до URL в якості пар ім'я/значення
  • це корисно для форм, коли користувачу потрібно надати можливість додати результат в закладки
  • Існує обмеження по розміру форм-даних, що передаються в URL (Цей розмір залежить від конкретного браузера), тому, ви не можете бути впевнені, що всі форм-дані будуть коректно передано
  • Ніколи не використовуйте метод "get", щоб передати конфіденційну інформацію! (Пароль або іншу конфіденційну інформацію буде відображатися в адресному рядку браузера)
автор: с3с
Нотатка

Про метод "post":

  • він посилає форм-дані в якості HTTP POST операції
  • Форма з методом "post" не може бути закладкою
  • він більш надійний та безпечний ніж метод"get"
  • він не має обмежень по розміру
автор: с3с

Синтаксис

<button type="submit" formmethod="get|post">

Атрибут formmethod може отримувати 2 значень:

get

Цей метод призначений для передачі даних форми безпосередньо в адресному рядку у вигляді пар "ім'я = значення", які додаються до адреси сторінки після знаку питання і розділяються між собою амперсандом (символ &). Повна адреса буде "http://example.com/?name=Taras&password=SD_Tdf7". Обсяг даних, що відправляються обмежений 4кб.

В жодному разі не використовуйте цей метод для відправки конфіденційних даних (Наприклад, для сторінки авторизації).

автор: с3с

post

Відправляє форм-дані на сервер пост запитом, обсяг даних, що пересилаються обмежений лише налаштуваннями сервера.

автор: с3с

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
9 4 5.1 15 12 10
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
37 18 4 5

Приклади

+ запропонувати свій приклад у пісочниці

Форма одна, метод у неї get, а кнопок п'ять. Стилі підписують кожній, чим вона насправді надішле дані: жовтим — ті, що беруть метод форми, синім — ті, що його перебивають, червоним — ті, у яких значення невідоме й тому мовчки перетвориться на get. Нижче — та сама форма з параметрами в action: підпис нагадує, що з get вони зникнуть.

HTML

<p class="head">Форма з method="get" і п'ятьма кнопками</p>
<form action="/poshuk" method="get">
  <input type="search" name="q" value="що шукаємо">
  <button type="submit">Знайти</button>
  <button type="submit" formmethod="post">Зберегти</button>
  <button type="submit" formmethod="POST">Зберегти (великими)</button>
  <button type="submit" formmethod="put">Оновити</button>
  <button type="submit" formmethod="dialog">Скасувати</button>
</form>

<p class="head">Параметри в action і метод get разом не живуть</p>
<form action="/zvit?rik=2026&misyats=8" method="post">
  <input type="text" name="q" value="текст">
  <button type="submit">Надіслати (post)</button>
  <button type="submit" formmethod="get">Надіслати (get)</button>
</form>

<p class="head">Кнопки, на яких атрибут не діє</p>
<form action="/poshuk" method="get">
  <button type="button" formmethod="post">type="button"</button>
  <button type="reset" formmethod="post">type="reset"</button>
</form>

CSS

.head {
    margin: 20px 0 6px;
    color: #5a6472;
    font: 600 14px/1.4 system-ui, sans-serif;
    text-transform: uppercase;
    letter-spacing: .04em;
}

form {
    max-width: 640px;
    margin-bottom: 6px;
    padding: 10px;
    border: 1px solid #b9c6d8;
    border-radius: 6px;
    background: #f6f9ff;
}

input,
button {
    margin: 4px 0;
    padding: 5px 9px;
    font: inherit;
}

form[method="get"]::after {
    content: "форма: method=\"get\" — це типове для всіх кнопок нижче";
    display: block;
    margin-top: 6px;
    color: #8a6100;
    font-size: .85em;
}

form[method="post"]::after {
    content: "форма: method=\"post\", action зі своїм рядком запиту";
    display: block;
    margin-top: 6px;
    color: #1b4f9c;
    font-size: .85em;
}

/* кнопка без свого formmethod бере метод форми */
button[type="submit"]:not([formmethod]),
button:not([type]):not([formmethod]) {
    background: #fff6d8;
    outline: 2px solid #e0a800;
}

button[type="submit"]:not([formmethod])::after {
    content: " → метод форми";
    color: #8a6100;
    font-size: .8em;
}

/* кнопка з відомим значенням справді перебиває метод */
button[formmethod="post"],
button[formmethod="POST"],
button[formmethod="get"],
button[formmethod="dialog"] {
    background: #eef3fb;
    outline: 2px solid #2f6fd0;
}

button[formmethod="post"]::after,
button[formmethod="POST"]::after,
button[formmethod="get"]::after,
button[formmethod="dialog"]::after {
    content: " → " attr(formmethod);
    color: #1b4f9c;
    font-size: .8em;
}

button[formmethod="dialog"]::after {
    content: " → нічого не надсилає, закриває dialog";
}

/* невідоме значення: усе, що не get/post/dialog */
button[formmethod]:not([formmethod="post" i]):not([formmethod="get" i]):not([formmethod="dialog" i]) {
    background: #fff4f4;
    outline: 2px solid #d64545;
}

button[formmethod]:not([formmethod="post" i]):not([formmethod="get" i]):not([formmethod="dialog" i])::after {
    content: " → " attr(formmethod) " невідоме, насправді get";
    color: #c0392b;
    font-size: .8em;
}

/* на цих типах атрибут не діє зовсім */
button[type="button"],
button[type="reset"] {
    background: #f4f5f7;
    outline: 2px dashed #97a1ae;
}

button[type="button"]::after,
button[type="reset"]::after {
    content: " → formmethod тут не діє";
    color: #5a6472;
    font-size: .8em;
}
автор: NagarD
<p>Приклад форми для входу з використанням атрибуту 'formmethod'</p>
<hr>
 <form>
  <label>Ім'я:</label><br>
  <input type="text" name="login"><br>
  <label>Прізвище:</label><br>
  <input type="text" name="login"><br>
  <label>Ваше повідомлення:</label><br>
  <textarea></textarea>
  <br>
   <button formmethod="post">Надіслати</button>
</form>
автор: с3с

Різниця між HTML 4.01 та HTML5


Атрибут formaction тега <button> з'явився тільки в HTML5.


Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід