有很多关于他们的传说。我想知道真相。下面两个例子有什么不同?
<input type='submit' value='text' />
<button type='submit'>text</button>
使用 <button>,您可以在文本所在的位置使用 img 标记等
<button>
<button type='submit'> text -- can be img etc. </button>
使用 <input>类型时,只能使用文本
<input>
不知道你从哪里得到你的传说,但:
比如:
<button type="submit">(html content)</button>
IE6会在标签之间提交这个按钮的所有文本,其他浏览器只会提交这个值。使用 <button>可以使您在按钮的设计上获得更多的布局自由。从所有的意图和目的来看,它一开始看起来非常优秀,但是各种各样的浏览器怪癖使得它有时很难使用。
在您的示例中,IE6将向服务器发送 text,而大多数其他浏览器将不发送任何内容。要使其跨浏览器兼容,请使用 <button type="submit" value="text">text</button>。更好的做法是: 不要使用该值,因为如果添加 HTML,服务器端接收到的内容就会变得相当棘手。相反,如果必须发送额外的值,则使用隐藏字段。
text
<button type="submit" value="text">text</button>
<input type="button" />
默认情况下,这几乎没有任何作用。它甚至不会提交你的表格。您只能将文本放置在按钮上,并通过 CSS 为其设置大小和边框。它最初(和当前)的意图是执行一个脚本,而不需要向服务器提交表单。
<input type="submit" />
像前者,但实际上提交了周围的形式。
<input type="image" />
像前者(提交) ,它也将提交一个表单,但你可以使用任何图像。当表单需要提交时,这曾经是使用图像作为按钮的首选方法。为了获得更多的控制,现在使用 <button>。这也可以用于 服务器端图像地图,但这是一个罕见的日子。当您使用 usemap-属性和(有或没有该属性) ,浏览器将发送鼠标指针 X/Y 坐标到服务器(更确切地说,鼠标指针位置内的按钮时,您点击它)。如果你只是忽略这些额外的东西,它只不过是一个伪装成图像的提交按钮。
usemap
浏览器之间有一些细微的差别,但是除了上面解释的 <button>标记之外,所有浏览器都会提交 value-Attribute。
总之:
<input type="submit"> <button type="submit"> Submit </button>
默认情况下,两者都会直观地绘制一个执行相同操作的按钮(提交表单)。
但是,建议使用 <button type="submit">,因为它具有更好的语义,更好的 ARIA 支持,并且更容易样式化。
<button type="submit">