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


148

关于它们有很多传说。我想知道真相。以下两个示例之间有什么区别?

  1. <input type='submit' value='text' />

  2. <button type='submit'>text</button>


29
你是说<input type="submit"><button type="submit">
kennytm


1
input是一个无效元素。不使用<input />,只用<input>
CDT

@HakanFıstık,不是那个的复制品,那是一个(或多或少地微妙)不同的东西,例如type=submitbutton因为那里甚至都不是一个问题(可能因为那时它甚至都不是标准品的一部分)(AFAIK),当问到另一个问题时)。
Sz。

Answers:


120

不确定从何处获得传说,但:

提交按钮 <button>

与:

<button type="submit">(html content)</button>

IE6将在标记之间提交此按钮的所有文本,其他浏览器将仅提交值。使用<button>可使您在按钮的设计上享有更大的布局自由度。从各种意图和目的看,它乍一看似乎很出色,但是各种浏览器怪癖使它有时很难使用。

在您的示例中,IE6将发送text到服务器,而其他大多数浏览器将不发送任何内容。要使其跨浏览器兼容,请使用<button type="submit" value="text">text</button>。更好的是:不要使用该值,因为如果添加HTML,则在服务器端收到的内容将变得非常棘手。相反,如果必须发送额外的值,请使用隐藏字段。

带按钮 <input>

与:

<input type="button" />

默认情况下,这几乎不执行任何操作。它甚至不会提交您的表格。您只能在按钮上放置文本,并通过CSS为其指定大小和边框。其最初(当前)的意图是执行脚本,而无需将表单提交给服务器。

普通提交按钮,带有 <input>

与:

<input type="submit" />

像前者一样,但实际上提交了周围的表格。

图片提交按钮 <input>

与:

<input type="image" />

与前一个(提交)一样,它也将提交一个表单,但是您可以使用任何图像。这曾经是需要提交表单时将图像用作按钮的首选方式。为了获得更多控制,<button>现在使用。这也可以用于服务器端图像映射,但是如今这很少见。当您使用usemap-attribute和(带有或不带有该属性)时,浏览器会将鼠标指针的X / Y坐标发送到服务器(更确切地说,是单击鼠标时按钮内的鼠标指针位置)。如果您只是忽略这些额外功能,那无非就是伪装成图像的提交按钮。

浏览器之间有一些细微的差异,但是除了上述<button>标记外,所有浏览器都将提交值属性。


1
由于您一直在进行编辑,因此在怪癖模式下使用IE11时,关于IE6的观点仍然适用。(这是另一个不使用怪癖模式的原因)。在Edge中已修复。哦,<input>和<button>之间还有更多区别:white-space:pre默认情况下,< input>具有,而<button>没有。当尝试使按钮的宽度大于视口时,这变得显而易见。
李斯特先生

19

使用<button>,您可以使用img标签等,其中文本是

<button type='submit'> text -- can be img etc.  </button>

使用<input>类型,您只能使用文字


<input type="image" />您联系不仅限于文本,它还执行提交。
亚伯

2
@Abel:还要创建一个图像映射,该图像映射又将鼠标指针的位置作为name.xname.y参数发送(请注意,该name参数不存在!)。<input type="submit">如果唯一的目的是使用带有背景图像的按钮,我宁愿使用CSS背景。
BalusC,2010年

@BalusC:是的,但是,在编写HTML 2.0标准时,它的目的是在没有CSS的情况下,如描述的那样,将图像用作按钮服务器端图像映射。但是确实,您可以(ab)使用带有背景图像的普通按钮对CSS和HTML进行相同操作。
亚伯

@Abel:那从来都不是input type="image"。为此,其目的<button type="submit">是。
BalusC,2010年

1
@BalusC:也许我们对标准有不同的理解,但这是在Lee的HTML 2.0标准原始文本中:TYPE=IMAGE' implies TYPE = SUBMIT'处理;也就是说,当选择一个像素时,将提交整个表单。” 。使其成为您真正的意图:)
Abel

1

综上所述 :

<input type="submit">

<button type="submit"> Submit </button>

默认情况下,两者都将在视觉上绘制一个执行相同操作的按钮(提交表单)。

但是,建议使用<button type="submit">它,因为它具有更好的语义,更好的ARIA支持并且更易于样式设置。

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.