单击 <button> 元素时的标准行为是啥?它会提交表格吗?

Posted

技术标签:

【中文标题】单击 <button> 元素时的标准行为是啥?它会提交表格吗?【英文标题】:What's standard behavior when <button> element is clicked? Will it submit the form?单击 <button> 元素时的标准行为是什么?它会提交表格吗? 【发布时间】:2021-08-25 00:01:50 【问题描述】:

在表单中单击&lt;button&gt; 元素时的标准行为是什么?它会提交表单吗?

问题是关于标签/元素&lt;button&gt;,而不是&lt;input type=button&gt;

【问题讨论】:

【参考方案1】:

如果按钮在表单中,则默认行为是提交。

如果按钮不在表单中,它什么也不做。

请注意!

始终指定类型属性 按钮。默认类型为 Internet Explorer 是“按钮”,而 在其他浏览器中(以及在 W3C 规范)它是“提交”。

取自http://www.w3schools.com/tags/tag_button.asp

【讨论】:

button 没有 type 属性在 IE11 中提交。 我不敢相信我会这么说,但我认为 IE 是对的,而其他人都错了。我想我只是吐了一点。我看到 w3 说默认应该是submit,但从逻辑上讲,button 更有意义。【参考方案2】:

是的,它默认为 submit 类型。

type = submit|button|reset [CI] 此属性声明按钮的类型。可能的值:

submit:创建提交按钮。这是默认值

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

所以当button 在表单中时它会提交它,当它不在表单中时,它仍然默认为submit 但什么也不做(因为没有与之关联的表单)。

正如 raRaRa 在下面指出的,旧版本的 IE 将 button 标签默认类型设置为 button:http://www.thefutureoftheweb.com/blog/button-wont-submit-in-ie

【讨论】:

以上是关于单击 <button> 元素时的标准行为是啥?它会提交表格吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何设定CSS控制元素内部的元素之间间距

RecyclerView onItemClick button和布局都有单击事件时的处理方式

jquary依据td中button的元素属性删除tr行(删选出想删除的行)

单击 <button> 标签

输入触发器按钮单击

单击打开模式的按钮后触发单击 DIV