<input type ='button'/>和<input type ='submit'/>之间的区别


222

没有一个愚蠢的问题,所以我们开始:<input type='button' />和之间有什么区别<input type='submit' />


2
HTML <button>元素不会自行提交表单,而是...
Hexagon Theory

6
实际上,在某些浏览器中也是如此。有一个没有提交按钮但有一个<button>的表单将对其应用提交功能。Firefox具有此行为。
jishi

在阅读W3C规范时,这实际上是默认的行为,因为按钮具有默认为“提交”的类型属性。
jishi


37
我有同样的问题,这绝对不是一个愚蠢的问题,尤其是如果您一生都是asp.net Web表单开发人员,而我们一整天都不使用常规html,因为愚蠢的asp.net控件会吐出这种垃圾对我们来说...这就是为什么当我们转向MVC并不得不回到幼儿园去弄清楚如何再次编码简单表单元素时,最终变得愚蠢。:)
PositiveGuy

Answers:


235

<input type="button" />按钮将不会提交表单-默认情况下,它们不会执行任何操作。它们通常与JavaScript一起用作AJAX应用程序的一部分。

<input type="submit"> 按钮会提交用户单击时所在的表单,除非您使用JavaScript另行指定。


42
此外,浏览器可以捕获表单上的“ Enter”键,并在有提交按钮的情况下自动提交表单,否则不会自动提交。
Shiny和New安宇

2
如果您输入的是type =“ image”,那么它们也可以执行此操作,当您单击该类型时,可以用来触发提交表单。
吉士

5
Shiny and New先生:可以通过Enter键提交表单,而无需任何按钮。例如,专注于文本输入就足够了。
拉萨尔

3
您可以使用BUTTON元素,尽管(感到惊讶)使用“每个人的收藏夹浏览器(IE)”时它们都有一些问题。值得知道的。

4
这显然是非常古老的,但是我觉得需要给我2美分,因为我认为使用按钮类型是一个很大的失败... javascript提交未触发表单onsubmit事件,这可能导致维护方面的噩梦。
mothmonsterman 2010年

20

“按钮”就是一个按钮,您可以使用Javascript向其中添加其他功能。“提交”输入类型具有提交所放置表单的默认功能(当然,您仍然可以使用Javascript添加其他功能)。


7

Button不会自行提交表单,它是一个简单的按钮,用于通过使用javascript执行某些操作,而Submit是一种按钮,默认情况下,每当用户单击Submit按钮时都会提交表单。


3

IE 8实际上使用遇到提交或按钮的第一个按钮。通过将其设置为输入类型=提交,可以轻松地指示该页面上的顺序,而不是通过它来轻松指示。


3

还应该提到的是,类型为“ submit”的命名输入也将与其他表单的命名字段一起提交,而命名输入为类型“ 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 /的文件夹中创建两个文件,然后从shell运行内置的PHP Web服务器,在本地计算机上测试上述内容:

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

打开位于http:// localhost:3000的浏览器,然后亲自查看。

有人会怀疑为什么我们需要提交一个命名按钮?这取决于后端脚本。例如,除非Place Order也提交了命名按钮,否则WooCommerce WordPress插件将不会处理发布的Checkout页面。如果将其类型从“ 提交”更改为“ 按钮”,则不会提交此按钮,因此将永远不会处理“结帐”表单。

这可能是一个很小的细节,但您知道,细节中存在魔鬼。


这是否符合规范,还是取决于浏览器?
马格努斯·林德·奥克斯隆德

0

<input type="button">可以在任何地方使用,而不仅限于在表单中使用,如果它们合而为一,则不提交表单。更好地适合Javascript

<input type="submit">应该仅在表单中使用,它们将向指定的URL发送请求(GET或POST)。他们应该不是放在任何HTML地方。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.