HTML-элемент <button> не отправляет форму самостоятельно, приятель ...
Hexagon Theory
6
На самом деле, это происходит в некоторых браузерах. Имея форму, без кнопки отправки, но вместо этого <кнопка> будет применять к ней функцию отправки. Firefox имеет такое поведение.
Джиши
При чтении спецификации W3C это на самом деле поведение по умолчанию, так как у кнопок есть атрибут type, который по умолчанию равен «submit».
У меня был тот же вопрос, и это определенно не глупый вопрос, особенно если вы всю жизнь были разработчиком веб-форм asp.net, где мы не используем обычный html день, потому что глупые элементы управления asp.net выкладывают это дерьмо для нас ... вот почему мы в конечном итоге становимся тупыми при переходе на MVC и вынуждены возвращаться в детский сад, чтобы выяснить, как снова закодировать простые элементы формы. :)
PositiveGuy
Ответы:
235
<input type="button" />кнопки не отправят форму - по умолчанию они ничего не делают. Они обычно используются вместе с JavaScript как часть приложения AJAX.
<input type="submit"> кнопки будут отправлять форму, в которой они находятся, когда пользователь нажимает на них, если вы не укажете иное с помощью JavaScript.
Также браузеры могут регистрировать нажатие клавиши «Ввод» в форме и автоматически отправлять форму, если есть кнопка «Отправить», но не иначе.
Мистер Блестящий и Новый
2
Они также делают это, если у вас есть type = "image", который можно использовать для запуска отправки формы при нажатии.
Джиши
5
Mr. Shiny and New: Формы могут быть отправлены с помощью клавиши ввода без каких-либо кнопок. Например, достаточно сосредоточиться на вводе текста.
Ласар
3
Вы можете использовать элементы BUTTON, хотя (к удивлению) с ними есть несколько проблем при использовании Всеобщего любимого браузера (IE). Хотя стоит знать об этом.
4
Это, очевидно, очень старый процесс, но я чувствую необходимость отдать свои 2 цента, поскольку считаю, что использование типов кнопок приводит к значительному снижению ... событие onsubmit формы НЕ запускается из представлений javascript, что ведет к потенциальным кошмарам обслуживания.
Mothmonsterman
20
«Кнопка» - это просто кнопка, к которой вы можете добавить дополнительные функции, используя Javascript. Тип ввода 'submit' имеет функцию по умолчанию для отправки формы, в которой он находится (хотя, конечно, вы все равно можете добавить дополнительные функции, используя Javascript).
Кнопка не будет отправлять форму сама по себе. Это простая кнопка, которая используется для выполнения некоторой операции с использованием javascript, тогда как кнопка «Отправить» - это своего рода кнопка, которая по умолчанию отправляет форму всякий раз, когда пользователь нажимает кнопку «Отправить».
IE 8 фактически использует первую кнопку, с которой он сталкивается, кнопку отправки или кнопку. Вместо того, чтобы легко указывать, что нужно, сделав его тип ввода = отправить порядок на странице на самом деле имеет значение.
Следует также отметить, что именованный ввод type = "submit" будет также отправлен вместе с именованными полями другой формы, в то время как именованный ввод type = = button не будет.
Другими словами, в приведенном ниже примере именованный вход name=button1НЕ будет отправлен, пока именованный вход name=submit1БУДЕТ получить представлен.
Пример HTML-формы (index.html):
<formaction="checkout.php"method="POST"><!-- this won't get submitted despite being named --><inputtype="button"name="button1"value="a button"><!-- this one does; so the input's TYPE is important! --><inputtype="submit"name="submit1"value="a submit button"></form>
PHP-скрипт (checkout.php), который обрабатывает действие вышеуказанной формы:
<?php var_dump($_POST);?>
Проверьте вышеупомянутое на своей локальной машине, создав два файла в папке с именем / tmp / test /, а затем запустив встроенный веб-сервер PHP из оболочки:
Кто-то может спросить, зачем нам отправлять именованную кнопку? Это зависит от внутреннего сценария. Например, плагин WooCommerce WordPress не будет обрабатывать опубликованную страницу Checkout, если только не будет Place Orderназвана названная кнопка. Если вы измените его тип от отправки на кнопку, эта кнопка не будет отправлена, и, таким образом, форма Checkout никогда не будет обработана.
Это, вероятно, маленькая деталь, но вы знаете, дьявол кроется в деталях.
Это в соответствии со спецификацией или это зависит от браузера?
Магнус Линд Окслунд
0
<input type="button">может использоваться где угодно, а не только в форме, и они не отправляют форму, если они находятся в одном. Намного лучше подходит с Javascript.
<input type="submit">следует использовать только в формах, и они отправят запрос (GET или POST) на указанный URL. Они не должны быть помещены в любое место HTML.
Ответы:
<input type="button" />
кнопки не отправят форму - по умолчанию они ничего не делают. Они обычно используются вместе с JavaScript как часть приложения AJAX.<input type="submit">
кнопки будут отправлять форму, в которой они находятся, когда пользователь нажимает на них, если вы не укажете иное с помощью JavaScript.источник
«Кнопка» - это просто кнопка, к которой вы можете добавить дополнительные функции, используя Javascript. Тип ввода 'submit' имеет функцию по умолчанию для отправки формы, в которой он находится (хотя, конечно, вы все равно можете добавить дополнительные функции, используя Javascript).
источник
Кнопка не будет отправлять форму сама по себе. Это простая кнопка, которая используется для выполнения некоторой операции с использованием javascript, тогда как кнопка «Отправить» - это своего рода кнопка, которая по умолчанию отправляет форму всякий раз, когда пользователь нажимает кнопку «Отправить».
источник
IE 8 фактически использует первую кнопку, с которой он сталкивается, кнопку отправки или кнопку. Вместо того, чтобы легко указывать, что нужно, сделав его тип ввода = отправить порядок на странице на самом деле имеет значение.
источник
Следует также отметить, что именованный ввод type = "submit" будет также отправлен вместе с именованными полями другой формы, в то время как именованный ввод type = = button не будет.
Другими словами, в приведенном ниже примере именованный вход
name=button1
НЕ будет отправлен, пока именованный входname=submit1
БУДЕТ получить представлен.Пример HTML-формы (index.html):
PHP-скрипт (checkout.php), который обрабатывает действие вышеуказанной формы:
Проверьте вышеупомянутое на своей локальной машине, создав два файла в папке с именем / tmp / test /, а затем запустив встроенный веб-сервер PHP из оболочки:
Откройте свой браузер на http: // localhost: 3000 и убедитесь сами.
Кто-то может спросить, зачем нам отправлять именованную кнопку? Это зависит от внутреннего сценария. Например, плагин WooCommerce WordPress не будет обрабатывать опубликованную страницу Checkout, если только не будет
Place Order
названа названная кнопка. Если вы измените его тип от отправки на кнопку, эта кнопка не будет отправлена, и, таким образом, форма Checkout никогда не будет обработана.Это, вероятно, маленькая деталь, но вы знаете, дьявол кроется в деталях.
источник
<input type="button">
может использоваться где угодно, а не только в форме, и они не отправляют форму, если они находятся в одном. Намного лучше подходит сJavascript
.<input type="submit">
следует использовать только в формах, и они отправят запрос (GET или POST) на указанный URL. Они не должны быть помещены в любое место HTML.источник
W3C проясняет, о спецификации об элементе Button
Кнопка может рассматриваться как универсальный класс для всех видов кнопок без поведения по умолчанию.
W3C
источник
type='Submit'
настроен на пересылку и получение значений в BACK-END (PHP, .NET и т. д.).type='button'
будет отражать нормальное поведение кнопки.источник