Разница между <input type = 'button' /> и <input type = 'submit' /> - PullRequest
210 голосов
/ 14 ноября 2008

Глупого вопроса не существует, поэтому здесь мы говорим: в чем разница между <input type='button' /> и <input type='submit' />?

Ответы [ 8 ]

219 голосов
/ 14 ноября 2008
Кнопки

<input type="button" /> не отправят форму - по умолчанию они ничего не делают. Они обычно используются вместе с JavaScript как часть приложения AJAX.

<input type="submit"> кнопки будут отправлять форму, в которой они находятся, когда пользователь нажимает на них, если вы не укажете иное с помощью JavaScript.

17 голосов
/ 14 ноября 2008

Кнопка - это просто кнопка, к которой вы можете добавить дополнительные функции, используя Javascript. Тип ввода 'submit' имеет функцию по умолчанию для отправки формы, в которой он находится (хотя, конечно, вы все равно можете добавить дополнительные функции, используя Javascript).

6 голосов
/ 26 апреля 2011

Кнопка не будет отправлять форму сама по себе. Это простая кнопка, которая используется для выполнения некоторых операций с использованием javascript, тогда как кнопка «Отправить» - это своего рода кнопка, которая по умолчанию отправляет форму всякий раз, когда пользователь нажимает кнопку «Отправить».

3 голосов
/ 18 марта 2017

Следует также отметить, что именованный ввод type = "submit" будет также отправлен вместе с именованными полями другой формы, в то время как именованный ввод type = = button "не будет.

Другими словами, в приведенном ниже примере именованный ввод name=button1 БЕЗ будет отправлен, а именованный ввод name=submit1 БУДЕТ .

Пример HTML-формы (index.html):

<form action="checkout.php" method="POST">

  <!-- this won't get submitted despite being named -->
  <input type="button" name="button1" value="a button">

  <!-- this one does; so the input's TYPE is important! -->
  <input type="submit" name="submit1" value="a submit button">

</form>

PHP-скрипт (checkout.php), который обрабатывает действие вышеуказанной формы:

<?php var_dump($_POST); ?>

Проверьте вышеупомянутое на вашем локальном компьютере, создав два файла в папке с именем / tmp / test /, а затем запустив встроенный веб-сервер PHP из оболочки:

php -S localhost:3000 -t /tmp/test/

Откройте браузер на http://localhost:3000 и убедитесь сами.

Можно задаться вопросом, зачем нам отправлять именованную кнопку? Это зависит от серверного сценария. Например, плагин WooCommerce WordPress не будет обрабатывать размещенную страницу Checkout, если только не будет отправлена ​​именованная кнопка Place Order. Если вы измените его тип с submit на button , то эта кнопка не будет отправлена ​​и, следовательно, форма Checkout никогда не будет обработана.

Возможно, это маленькая деталь, но вы знаете, дьявол кроется в деталях.

3 голосов
/ 15 мая 2015

IE 8 фактически использует первую кнопку, с которой он сталкивается, кнопку отправки или кнопку. Вместо того, чтобы просто указывать, что нужно, сделав его типом ввода = отправить порядок на странице, на самом деле имеет значение.

0 голосов
/ 16 августа 2017

type='Submit' установлен для пересылки и получения значений в ЗАДНЕМ КОНЦЕ (PHP, .NET и т. Д.). type='button' будет отражать нормальное поведение кнопки.

0 голосов
/ 13 ноября 2016

W3C прояснить, о спецификации об элементе Button

Кнопка может рассматриваться как универсальный класс для всех видов кнопок без поведения по умолчанию.

W3C

0 голосов
/ 31 июля 2016

<input type="button"> можно использовать где угодно, а не только внутри формы, и они не отправляют форму, если они есть в одной. Намного лучше подходит с Javascript.

<input type="submit"> следует использовать только в формах, и они отправят запрос (GET или POST) на указанный URL-адрес. Они должны не быть помещены в любое место HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...