input type="submit"
和button
标签可以交替使用吗?如果它们有区别,那么什么时候使用input type="submit"
,什么时候使用button
?
如果没有区别,为什么我们有两个标签用于相同的目的?
input type="submit"
和button
标签可以交替使用吗?如果它们有区别,那么什么时候使用input type="submit"
,什么时候使用button
?
如果没有区别,为什么我们有两个标签用于相同的目的?
http://www.w3.org/TR/html4/interact/forms.html#h-17.5
使用 BUTTON 元素创建的按钮和使用 INPUT 元素创建的按钮功能相同,但它们提供了更丰富的渲染可能性:BUTTON 元素可以包含内容。例如,包含图像的 BUTTON 元素与 type 属性设置为 "image" 的 INPUT 元素的功能类似并且可能看起来相似,但 BUTTON 元素类型允许包含内容。
所以就功能而言,它们是可互换的!
(别忘了,对于 button 元素,type 属性默认为 "submit",因此不用加上它!)
type="submit"
与按钮一起使用,因为 type
的默认值是 submit
。 - synctype
默认为button
的情况。我更喜欢显式地指定每个属性,以避免任何浏览器不一致性。 - MatTheCat<input type="button" />
只是一个按钮,本身不会有任何作用。
<input type="submit" />
如果在表单元素中,当点击时将提交表单。
另一个有用的“特殊”按钮是 <input type="reset" />
,它将清除表单。
<input>
和 <button>
标签。你在回答中提供了关于 <input>
的有用信息,但是缺少了 <button>
方面的内容。 - Peyman Mohamadpour虽然两个元素可以实现相同的功能, 但我强烈建议你使用<button>
:
input
暗示该控件可被用户编辑; 而 button
更清楚地表明其用途。input[type="submit"]
在某些情况下无法正确显示。POST
/GET
请求时的行为是不确定的。* 除了默认没有指定行为的<button type="button">
之外。
总之,我强烈反对使用<input type="submit"/>
。
<input type='submit' />
是一个单独的自闭合标签,内部不支持HTML,因此不能在其中添加HTML内容。而<button>
标签可以支持HTML、图像等内容,因为它是一个成对的标签:<button><img src='myimage.gif' /></button>
。在CSS样式方面,<button>
也更加灵活。
但是<button>
标签并不被所有的老版本浏览器完全支持。例如,IE6/7无法正确显示它。
除非你有特定的原因需要使用<button>
,否则最好还是采用<input type='submit' />
标签。
<input type="submit" value="登录" />
- Jared Ng<button>
标签,转而采用新的标签。这是否意味着我们在回答中不应提及特定的标签,因为它可能在未来某个时候发生变化?我更愿意将其留给读者去确定答案如何适用于他们的情况。只要信息对读者有价值,我认为包含它并没有问题。 - Jared Ng我知道这是一个旧问题,但我在mozilla.org上找到了这个答案,并且认为它适用。
按钮可以有三种类型:submit、reset或button。单击提交按钮会将表单数据发送到元素的操作属性定义的网页。
单击重置按钮会立即将所有表单小部件重置为其默认值。从用户体验的角度来看,这被认为是不良做法。
单击按钮按钮...什么也不做!听起来很傻,但使用JavaScript构建自定义按钮非常有用。
<button type="button">
以使滑块/轮播到达下一张幻灯片。 - chharvey<button>
比 <input type="submit">
新,更具语义化,易于样式化并支持其中包含 HTML。
虽然其他回答都很好并回答了问题,但是在使用 input type="submit"
和 button
时有一件事情需要考虑。对于一个 input type="submit"
,你不能够在它上面使用 CSS 伪元素,但是你可以在一个 button 上使用!
这就是使用 button
元素而不是 input 来进行样式设计的原因之一。
我不知道这是一个错误还是一个特性,但我发现有一个非常重要的区别(至少对某些情况而言):<input type="submit">
会在请求中创建键值对,而<button type="submit">
则不会。在Chrome和Safari中进行了测试。
因此,当您的表单中有多个提交按钮,并且想要知道哪个被点击时,请勿使用button
,而应该使用input type="submit"
。
如果你在谈论 <input type=button>
,它不会自动提交表单
如果你在谈论 <button>
标签,那是较新的标签,在某些浏览器中不会自动提交。
总之,如果你想要在所有浏览器中点击后提交表单,请使用 <input type="submit">
<button type="submit">
来自动提交表单。 - jumpnett