HTML <input type='button' />和<input type='submit' />之间有什么区别?


<input type="button" />按钮不会提交表单——默认情况下它们什么都不做。它们通常作为AJAX应用程序的一部分与JavaScript一起使用。

>按钮将在用户点击它们时提交它们所在的表单,除非您使用JavaScript另有指定。

表单的第一个提交按钮也是被点击进行隐式提交的按钮,例如在文本输入中按enter键。


“按钮”只是一个按钮,你可以使用Javascript添加额外的功能。“submit”输入类型具有提交其所在表单的默认功能(当然,您仍然可以使用Javascript添加其他功能)。


IE 8实际上使用它遇到的第一个按钮提交或按钮。在页面上提交订单,而不是简单地通过输入type=来指示需要的是什么,这实际上很重要。


还应该提到的是,type="submit"的命名输入也将与其他表单的命名字段一起提交,而type="button"的命名输入则不会。

换句话说,在下面的例子中,命名的输入名称=button1将不会被提交,而命名的输入名称=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,自己看看吧。

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

这可能是一个小细节,但你知道,细节决定成败。