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

有没有这样的事情是一个愚蠢的问题,所以在这里我们去: <input type='button' /><input type='submit' />之间有什么区别?

<input type="button" />button不会提交表单 – 默认情况下他们不做任何事情。 它们通常与JavaScript结合使用,作为AJAX应用程序的一部分。

<input type="submit">button将在用户点击时提交他们所在的表单,除非您使用JavaScript指定。

一个“button”就是一个button,您可以使用Javascript添加其他function。 “提交”inputtypes具有提交所放置表单的默认function(当然,您仍然可以使用Javascript添加其他function)。

Button不会自行提交表单,它是一个简单的button,用来通过javascript来执行一些操作,而Submit则是一种当用户点击提交button时默认提交表单的button。

IE 8实际上使用它遇到的第一个button提交或button。 而不是通过使其成为inputtypes=提交页面上的订单来容易地指示哪个是期望的。

还应该提到,type =“submit”的命名input将与其他表单的命名字段一起提交,而命名inputtypes=“button”则不会。

换句话说,在下面的例子中,指定的inputname=button1 将不会被提交,而指定的inputname=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 /的文件夹中创build两个文件,然后从shell运行内置的PHP Web服务器,在本地机器上testing以上内容:

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

在http:// localhost:3000打开你的浏览器,看看你自己。

有人会问,为什么我们需要提交一个命名button? 这取决于后端脚本。 例如,WooCommerce WordPress插件不会处理发布的Checkout页面,除非提交了Place Order namedbutton。 如果您将其types从提交更改为button,则该button将不会被提交,因此Checkout表单将永远不会被处理。

这可能是一个小细节,但你知道,魔鬼是在细节。

<input type="button">可以在任何地方使用,而不只是在表单中,如果它们在一个表单中,它们不会提交表单。 更适合使用Javascript

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

W3C在关于Button元素的规范中明确指出

button可能被看作是没有默认行为的所有button的通用类。

W3C

type='Submit'被设置为转发并获取BACK-END(PHP,.NET等)的值。 type='button'将反映正常的button行为。