input type="submit" 与按钮标签是不是可以互换? [复制]

Posted

技术标签:

【中文标题】input type="submit" 与按钮标签是不是可以互换? [复制]【英文标题】:input type="submit" Vs button tag are they interchangeable? [duplicate]input type="submit" 与按钮标签是否可以互换? [复制] 【发布时间】:2011-10-30 08:46:07 【问题描述】:

input type="submit"button 标签可以互换吗?或者如果有任何区别,那么何时使用input type="submit" 和何时使用button

如果没有区别,为什么我们有 2 个标签用于相同目的?

【问题讨论】:

另见Difference between <input type='button' /> and <input type='submit' /> 在某些版本的 IE 中使用buttonvalue 属性时避免有趣 的一天,input 只会发送您所期望的,某些版本的 IE与buttons 不兼容。 答案与input type="button" vs button type=button基本相同:***.com/questions/469059/… 这能回答你的问题吗? <button> vs. <input type="button" />. Which to use? 【参考方案1】:

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

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

因此,仅就功能而言,它们是可互换的!

(别忘了,type="submit"button 的默认值,所以不要使用它!)

【讨论】:

请注意,IE6 会提交页面上所有按钮的值,因此很难准确确定单击了哪个按钮。解释:vancelucas.com/blog/ie6-and-multiple-button-submit-elements 仅供参考,您没有type="submit"与按钮一起使用,因为type的默认值为submit 这就是 W3C 所说的,但我很确定我见过 type 默认为 button 的情况。我更喜欢明确每个属性以避免任何浏览器不一致。 根据参考是的。但并非所有浏览器都遵循参考规范,对吧? @chharvey,没有前者可能有子节点;即非文本内容。我想你可以说,除了简洁之外,后者没有理由存在。【参考方案2】:

&lt;input type="button"&gt; 只是一个按钮,它自己不会做任何事情。 &lt;input type="submit"&gt;,当在表单元素中时,将在单击时提交表单。

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

【讨论】:

问题是关于按钮标签而不是 问题是关于&lt;input&gt;&lt;button&gt; 标签。您在回答中提供了有关 &lt;input&gt; 的有用信息,但缺少 &lt;button&gt; 方面。【参考方案3】:

虽然这两个元素在功能上提供相同的结果*,我强烈建议您使用&lt;button&gt;

更加明确和可读。 input 表示该控件可编辑,或者可以由用户编辑; button 的用途更加明确 更容易在 CSS 中设置样式;如上所述,Firefox 和 IE 有一些怪癖,其中input[type="submit"] 在某些情况下无法正确显示 可预测的请求:当POST/GET 请求中的值提交给服务器时,IE 会出现异常行为 标记友好;您可以在按钮内嵌套项目,例如图标。 HTML5,具有前瞻性;作为开发人员,我们有责任在新规范正式化后采用它。截至目前,HTML5 正式发布已经一年多了,并且在许多情况下都被证明可以提升 SEO

* &lt;button <strong>type="button"</strong>&gt; 除外,默认情况下没有指定行为。

总之,我强烈反对使用&lt;input type="submit"/&gt;

【讨论】:

谢谢。我一直在寻找这个,特别是对于 HTML5 语义点。 2020 年,我们必须超越纯粹的功能。【参考方案4】:

使用 。这是引导程序 3 中的建议做法。

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

"跨浏览器渲染

作为最佳实践,我们强烈建议使用

除其他外,还有一个 Firefox 错误阻止我们 设置基于 的按钮的 line-height,导致它们不 与 Firefox 上其他按钮的高度完全匹配。”

【讨论】:

为此 +1。 button 更加明确,并带有 aria 辅助功能,并且更容易设置样式。它也是具有前瞻性的,因为它是 HTML5。【参考方案5】:

&lt;input type='submit' /&gt; 不支持其中的 HTML,因为它是单个自闭合标签。另一方面,&lt;button&gt; 在内部支持 HTML、图像等,因为它是一个标签对:&lt;button&gt;&lt;img src='myimage.gif' /&gt;&lt;/button&gt;&lt;button&gt; 在 CSS 样式方面也更加灵活。

&lt;button&gt; 的缺点是旧浏览器不完全支持它。例如,IE6/7 不能正确显示。

除非您有特定原因,否则最好坚持使用&lt;input type='submit' /&gt;

【讨论】:

答案来自 2 年前。此外,还可以指定备用按钮文本:&lt;input type="submit" value="Log In" /&gt; @nailer 你完全有权发表你的意见,但任何答案都不可避免地会参考当前的技术状态。也许 HTML 6 会弃用 &lt;button&gt; 以支持新的东西。这是否意味着我们根本不应该在答案中提及特定标签,因为它可能在未来的某个时候会发生变化?我宁愿把它作为练习留给读者,以确定答案如何适用于他们的情况。只要信息对读者有价值,我认为包含它没有问题。 在写答案的时候,IE6/7 已经过时了。一个新的网络开发者阅读你的帖子,没有检查你的支持论点并意识到它们不再适用,会认为有充分的理由不使用“按钮”元素。 @nailer 没有每个人都遵守的通用“过时”浏览器列表。不同的工作场所对支持的浏览器有不同的要求。仅仅因为您在 2011 年的“支持的浏览器”标准不包括 IE6/7 并不意味着到处都是这样。 我知道没有通用的“过时”浏览器列表 - 因此并非每个人都提到这样的事情。我要说的是,这可以更好地表述为“IE6/7 不正确支持显示按钮。如果这是一个问题,请坚持输入”,即您知道浏览器会改变,请考虑一下。这会阻止 *** 在 IE6 解决方法中永远暂停。【参考方案6】:

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

按钮可以有三种类型:提交、重置或按钮。点击一个 提交按钮将表单的数据发送到由 元素的动作属性。 单击重置按钮 立即将所有表单小部件重置为其默认值。从一个 从用户体验的角度来看,这被认为是不好的做法。 点击按钮 按钮……什么都没有!这听起来很愚蠢,但它非常有用 使用 javascript 构建自定义按钮。

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

【讨论】:

什么都不做有什么用? 因为您可以通过 Javascript 将处理程序挂钩到单击事件 @Honey 例如,您可以编写&lt;button type="button"&gt; 以将滑块/轮播推进到下一张幻灯片。【参考方案7】:

&lt;button&gt;&lt;input type="submit"&gt; 更新,更语义化,易于样式化并支持其中的 HTML。

【讨论】:

【参考方案8】:

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

这是在样式方面使用button 元素而不是输入的原因之一。

【讨论】:

【参考方案9】:

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

因此,当您的表单中有多个提交按钮并想知道点击了哪个按钮时 - 不要使用 button,而是使用 input type="submit"

【讨论】:

从我的经验来看,它完全相反,按钮通过 $_POST["submit_name"] 并且输入没有。在铬上测试。 Firefox 始终发送 $_POST["submit_name"]。 @GallAnnonim 可能取决于文档类型。因为我肯定使用 input type=submit 并且它适用于 chrome 有趣...我使用 使用 lang "pl" && 编码 utf-8 如果有任何差异。铬是 58.0.3029.96【参考方案10】:

如果你说的是&lt;input type=button&gt;,它不会自动提交表单

如果您谈论的是&lt;button&gt; 标签,那是较新的标签,并且不会在所有浏览器中自动提交。

底线,如果您希望表单在所有浏览器中点击提交,请使用&lt;input type="submit"&gt;

【讨论】:

您可以使用&lt;button type="submit"&gt; 自动提交表单。

以上是关于input type="submit" 与按钮标签是不是可以互换? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

输入 [type="submit"]:select CSS 不起作用

input type="submit" 与按钮标签是不是可以互换? [复制]

Css 伪类 input:not(disabled)not:[type="submit"]:focus

如何使用 input[type="submit"] 属性将 CSS 转换为 Styled-Components?

input type="submit" 如何换a超链接?

input type="submit" 和"button"有什么区别