input type =“submit”Vs按钮标签是否可以互换?

时间:2011-08-19 06:13:19

标签: html accessibility w3c web-standards semantic-markup

input type="submit"button标记是否可以互换?或者如果有任何差异,那么何时使用input type="submit"和何时button

如果没有差异那么为什么我们有2个标签用于相同目的?

10 个答案:

答案 0 :(得分:115)

http://www.w3.org/TR/html4/interact/forms.html#h-17.5

  

使用BUTTON元素创建的按钮功能就像使用INPUT元素创建的按钮一样,但它们提供了更丰富的渲染可能性:BUTTON元素可能包含内容。例如,包含图像的BUTTON元素的功能类似于并且可能类似于其类型设置为“image”的INPUT元素,但BUTTON元素类型允许内容。

所以只有功能才可以互换!

(不要忘记,type="submit"button的默认设置,请将其关闭!)

答案 1 :(得分:60)

<input type="button">只是一个按钮,不会自行执行任何操作。 <input type="submit">在表单元素内部时,将在单击时提交表单。

另一个有用的“特殊”按钮是<input type="reset">,它将清除表单。

答案 2 :(得分:36)

使用&lt; button&gt;标记而不是&lt; input type =“button”..&gt; 。这是bootstrap 3中的建议做法。

http://getbootstrap.com/css/#buttons-tags

  

“跨浏览器呈现

”      

作为最佳做法,我们强烈建议您使用&lt; button&gt;元件   尽可能确保匹配跨浏览器呈现。

     

除此之外,还有一个阻止我们的Firefox错误   设置&lt; input&gt;基于按钮的行高,导致它们不行   完全匹配Firefox上其他按钮的高度。“

答案 3 :(得分:24)

<input type='submit' />不支持其中的HTML,因为它是一个自动关闭标记。另一方面,<button>支持内部的HTML,图片等,因为它是一个标记对:<button><img src='myimage.gif' /></button>。在CSS样式方面,<button>也更灵活。

<button>的缺点是旧浏览器并不完全支持它。例如,IE6 / 7无法正确显示它。

除非您有某些具体原因,否则最好坚持<input type='submit' />

答案 4 :(得分:23)

虽然这两个元素都提供了功能相同的结果*,我强烈建议您使用<button>

  • 更加明确和可读。 input表示该控件是可编辑的,或者可由用户编辑; button在其服务目的方面更为明确
  • 更容易在CSS中设计风格;如上所述,FIrefox和IE有一些怪癖,input[type="submit"]在某些情况下无法正确显示
  • 可预测的请求:当在POST / GET请求中向服务器提交值时,IE会有非常行为
  • 标记友好;您可以在按钮内嵌套项目,例如图标。
  • HTML5,前瞻性思维;作为开发人员,一旦官方化,我们有责任采用新规范。截至目前,HTML5已经正式推出一年多了,并且在很多情况下已经显示为提升SEO

* <button type="button">除外,默认情况下没有指定行为。

总之,我强烈反对使用<input type="submit" />

答案 5 :(得分:11)

我意识到这是一个古老的问题,但我在mozilla.org上发现了这一点并认为它适用。

  

按钮可以有三种类型:提交,重置或按钮。点击一下   提交按钮将表单的数据发送到由...定义的网页   元素的action属性。

单击重置按钮   立即将所有表单小部件重置为其默认值。从一个   UX的观点来看,这被认为是不好的做法。

单击按钮   按钮没有...没有!这听起来很傻,但它非常有用   使用JavaScript构建自定义按钮。

https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms/My_first_HTML_form#And_a_<button>_to_finish

答案 6 :(得分:9)

<button><input type="submit">更新,更具语义,更容易设计风格并支持其中的HTML。

答案 7 :(得分:7)

虽然其他答案很棒且回答了问题,但在使用input type="submit"button时需要考虑一件事。使用input type="submit"cannot use输入一个CSS伪元素,但可以一个按钮!

这就是在样式方面对输入使用button元素的一个原因。

答案 8 :(得分:2)

我不知道这是一个错误还是一个功能,但我发现非常重要(至少在某些情况下)差异:<input type="submit">在您的请求中创建了键值对<button type="submit"> 1}}没有。在Chrome和Safari中测试过。

因此,当您在表单中有多个提交按钮并想知道哪个按钮被点击时 - 请勿使用button,请改用input type="submit"

答案 9 :(得分:-2)

如果您正在谈论<input type=button>,它将不会自动提交表单

如果您正在谈论<button>标记,那么它会更新,并且不会在所有浏览器中自动提交。

一句话,如果您希望在所有浏览器中点击提交表单,请使用<input type="submit">