协慌网

登录 贡献 社区

<button> 与 <input type =“button”/>。哪个用?

在查看大多数站点(包括 SO)时,大多数站点使用:

<input type="button" />

代替:

<button></button>
  • 如果有的话,两者之间的主要区别是什么?
  • 是否有正当理由使用一个而不是另一个?
  • 有合理的理由使用它们吗?
  • 使用<button>是否存在兼容性问题,看到它没有被广泛使用?

答案

  • 这是一个描述差异的页面 (基本上你可以将 html 放入<button></button>
  • 另一页描述人们为什么要避开<button></button> (提示:IE6)

使用<button />时的另一个 IE 问题:

虽然我们在讨论 IE,但它有一些与按钮宽度相关的错误。当你试图添加样式时,它会神秘地添加额外的填充,这意味着你必须添加一个小小的黑客来控制事物。

就像旁注一样, <button>将隐式提交,如果你想在没有提交的情况下使用表单中的按钮,这可能会导致问题。因此,使用<input type="button"> (或<button type="button"> )的另一个原因

编辑 - 更多详情

如果没有类型, button隐式接收submit类型 。表单中有多少提交按钮或输入无关紧要,其中任何一个显式或隐式输入为提交,单击时,将提交表单。

按钮有 3 种支持的类型

submit ||  "submits the form when clicked (default)"
reset  ||  "resets the fields in the form when clicked"
button ||  "clickable, but without any event handler until one is assigned"

这篇文章似乎提供了很好的差异概述。

从页面:

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

按钮元素 - W3C