HTML <button> 元素

HTML <button> 元素 表示一个可点击的按钮。

以下代码展示了一个按钮:

<button type="button">点我!</button>

尝试一下 »

特性

内容类别 流式内容短语内容交互内容可列举的可标签的可提交的 表单相关内容元素,可触知内容
允许内容 短语内容
遗漏标签 不允许,开始标签和结束标签都不能省略。
允许的父级元素 任何接受短语内容的元素。
允许的 ARIA 角色 checkbox, link, menuitem, menuitemcheckbox, menuitemradio, radio, switch, tab
DOM 接口 Button 对象

属性

该元素包含了 全局属性

HTML5 中的新属性:autofocus、form、formaction、formenctype、formmethod、formnovalidate 以及 formtarget。

autofocus HTML5

一个布尔值的元素属性。用于指定当页面加载时,该按钮应当自动获得输入焦点。除非是用户重写,例如通过其他控件键入,才会失去焦点。一个文档中,只能有一个表单相关的元素可以指定该属性。

autocomplate

该属性用在 <button> 上还未标准化,是 Fireofx 特有的。不像其它浏览器,Firefox默认在页面跳转时,会保留 button 的动态禁用状态(Firefox persists the dynamic disabled state)。设置该属性为 off (即 autocomplete="off")可以关闭此特性。参见 bug 654072。可选值有:

  • on
  • off

disabled

一个布尔值的元素属性。表示用户不能和该按钮交互。如果该属性未设置,那么按钮继承自它的父元素的设置,例如 <fieldset>;如果父元素没有设置 disabled 属性,那么按钮是启用的。

form HTML5

form 属性表示该按钮所关联的表单元素 id。该属性的值必须是同一个文档中的 <form>id 属性。如果该属性未指定,且 <button> 存在上级 <form> 元素,则关联到该元素。通过该属性,<button> 元素可以关联到一个文档中的任意位置的 <form> 元素,而不仅仅是作为 <form> 元素的后代。

formaction HTML5

表示该按钮提交时,接收表单信息的 URI。如果指定了,将会覆盖按钮所属表单的 action 属性。

formenctype HTML5

如果该按钮是一个提交按钮,该属性指定了在向服务器发送表单数据之前如何对其进行编码。该属性与 type="submit" 配合使用。可选值有:

  • application/x-www-form-urlencoded:默认值。在发送前对所有字符进行编码。
  • multipart/form-data:如果 <input> 元素的 type 属性设置为 file type 时,使用该值。
  • text/plain:将空格转换为 "+" 符号,但不编码特殊字符。

如果指定了该属性,则覆盖掉按钮所属表单的 enctype 属性。

formmethod HTML5

如果按钮的类型是 submit,则该属性指定浏览器用于提交表单的 HTTP 方法。可选值有:

  • post: 表单中的数据包含在表单的正文中,并发送到服务器。
  • get: 表单中的数据以 “?” 作为分隔符,附加到 form 属性URI中,并将生成的URI发送到服务器。当表单没有副作用并且只包含ASCII字符时可以使用此方法。

如果指定了,该属性将覆盖按钮的表单所有者的 method 属性。

formnovalidate HTML5

一个布尔值的元素属性。如果按钮的类型是 submit,则此布尔属性指定在提交表单时不会验证该表单。如果指定了此属性,它将覆盖按钮的表单所有者的 novalidate 属性。

formtarget HTML5

如果按钮的类型是 submit,则此属性是一个名称或关键字,指示在提交表单后,在何处显示收到的响应(即 action URL的返回内容)。这是一个 浏览上下文(例如,标签页,窗口或内联框架)的名称或关键字。如果指定了此属性,它将覆盖按钮的表单所有者的 target 属性。以下关键字有特殊含义:

  • _self:将响应加载到当前的浏览上下文中。未指定时此值为默认值。
  • _blank:将响应加载到新的未命名浏览上下文中。
  • _parent:将响应加载到当前的父浏览上下文中。如果没有父级,则此选项的行为方式与 _self 相同。
  • _top:将响应加载到顶级浏览上下文(即,当前浏览上下文的祖先,且没有父级)。如果没有父级,则此选项的行为方式与 _self 相同。
  • framename:将响应加载到指定的 <iframe> 中。

name

一个字符串。按钮的名称,提交时作为表单的数据一部分的名称。

type

规定按钮的类型。可选值有:

  • submit:该按钮表示点击后将表单数据提交到服务器。未指定属性时的默认值。或是将属性动态更改为空值或无效值时,也变为该默认值。
  • reset:该按钮将所有控件重置为其初始值。
  • button:该按钮没有默认行为。它可以用于按钮的事件发生时(如点击),触发关联的客户端的脚本。
  • menu:该按钮打开一个由它指定的 <menu> 元素定义的弹出菜单。

value

一个字符串。规定按钮的初始值。它定义了表单提交的数据中,按钮相关联的值。当表单中提交时,这个值便以参数的形式被递送至服务器。可由脚本进行修改。

事件属性

<button> 标签支持 HTML 的事件属性

注意

<button> 元素加样式,要比 <input> 容易得多。你可以添加内联的 HTML 内容(如 <em>, <strong>,甚至是 <img>),还可以使用 :after:before 伪元素来实现复杂的效果,而 <input> 只能设置一个文本的值,这是该元素与使用 <input> 元素创建的按钮之间的不同之处。

IE7 有一个 bug,当使用 <button type="submit" name="myButton" value="foo">Click me</button> 提交表单时,发送的 POST 数据将是 myButton=Click me 而不是 myButton=foo
IE6 有一个更糟糕的 bug,当使用一个按钮提交表单时,所有的按钮都会出现和 IE7 相同的 bug。
这个 bug 在 IE8 已经被修复了。
如需兼容旧版浏览器,可使用 <input type="button"> 在 HTML 表单中创建按钮。

为了无障碍考虑,Firefox 会给获得焦点的按钮上加上一个小的点状边框。这个边框是通过浏览器样式表的 CSS 声明的,但是如果需要添加自己的焦点样式,可以使用 button<a href="/css-ref/prop-::-moz-focus-inner.html" title=" "><code>::-moz-focus-inner</code></a> { } 来重写。

不像其它浏览器,Firefox默认在页面跳转时,会保留 button 的动态禁用状态(Firefox persists the dynamic disabled state)。设置 autocomplete 属性的值为 off 可以关闭此特性。参见 bug 654072

Firefox <35 for Android 会在所有按钮上的 background-image 设置默认的渐变(参见 bug 763671)。可以设置 background-image: none 来禁用该效果。

点击和焦点

在不同的浏览器和系统中,默认情况下,点击一个 <button> 是否会获得焦点的结果是不一样的。设置了 type="button"type="submit"<input> 元素获取焦点结果与 <button> 一致。

在桌面浏览器中,点击 <button> 是否能获得焦点?

桌面浏览器 Windows 8.1 OS X 10.9
Firefox 30.0 否(即使设置了 tabindex
Chrome 35
Safari 7.0.5 N/A 否(即使设置了 tabindex
Internet Explorer 11 N/A
Presto (Opera 12)

在移动桌面浏览器中,点击 <button> 是否能获得焦点?

移动浏览器 iOS 7.1.2 Android 4.4.4
Safari Mobile 否(即使设置了 tabindex N/A
Chrome 35 否(即使设置了 tabindex

规范

规范 状态 备注
WHATWG HTML Living Standard
<button> 的定义
现行的标准 -
HTML5
<button> 的定义
推荐 -
HTML 4.01 Specification
<button> 的定义
推荐 -

桌面浏览器兼容性

特性 Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
基础支持 1.0 支持 1.0 (1.7 或更早) 支持 支持 支持
formaction 属性 9.0 支持 4.0 (2.0) 10 未知 未知
formenctype 属性 9.0 支持 4.0 (2.0) 10 10.6 未知
formmethod 属性 9.0 支持 4.0 (2.0) 10 未知 未知
autofocus 属性 5.0 支持 4.0 (2.0) 10 9.6 5.0
type 属性的值为 menu 未实现 未实现 未实现[1] 未实现 未实现 未知

移动浏览器兼容性

特性 Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基础支持 支持 支持 1.0 (1.0) 支持 支持 支持
formaction 属性 未知 支持 4.0 (2.0) 未知 未知 未知
formenctype 属性 未知 支持 4.0 (2.0) 未知 未知 未知
formmethod 属性 未知 支持 4.0 (2.0) 未知 未知 未知
type 属性的值为 menu 未知 未实现 未知 未知 未知 未知

[1] Gecko 还未实现该特性。参见 bug 1241353.

相关链接

用于创建表单的元素:<form><datalist><fieldset><input>,<keygen><label><legend><meter><optgroup><option><output><progress><select><textarea>