HTML 属性:disabled
布尔值属性 disabled
,当存在时,会使元素不可变、不可聚焦,甚至不会随表单提交。用户既不能编辑也不能聚焦于该控件,也不能聚焦于其子级表单控件。
试一试
<form>
<label for="name">Name:</label>
<input id="name" name="name" type="text" />
<label for="emp">Employed:</label>
<select id="emp" name="emp" disabled>
<option>No</option>
<option>Yes</option>
</select>
<label for="empDate">Employment Date:</label>
<input id="empDate" name="empDate" type="date" disabled />
<label for="resume">Resume:</label>
<input id="resume" name="resume" type="file" />
</form>
label {
display: block;
margin-top: 1em;
}
*:disabled {
background-color: dimgrey;
color: linen;
opacity: 1;
}
概述
如果在表单控件上指定了 disabled
属性,则该元素及其子级表单控件不参与约束验证。浏览器通常会灰色显示此类控件,并且它们不会接收任何浏览事件,例如鼠标点击或与焦点相关的事件。
disabled
属性支持 <button>
、<fieldset>
、<optgroup>
、<option>
、<select>
、<textarea>
和 <input>
。
此布尔值 disabled 属性表明用户无法与控件或其子级控件进行交互。如果未指定此属性,则控件会继承其包含元素的设置,例如 fieldset
;如果没有具有 disabled
属性的包含元素,并且控件本身没有该属性,则控件是启用的。如果声明在 <optgroup>
上,则 select 仍然是可交互的(除非另有禁用),但选项组中的任何项都不可选。
注意: 如果禁用了 <fieldset>
,则所有子级表单控件都将被禁用,但 <legend>
中的表单控件除外。
当支持的元素应用了 disabled
属性时,:disabled
伪类也适用于该元素。反之,支持 disabled
属性但未设置该属性的元素会匹配 :enabled
伪类。
此布尔值属性可阻止用户与按钮进行交互。如果未设置此属性,则按钮仍可能被其包含元素禁用,例如 <fieldset>
;如果没有具有 disabled
属性的包含元素,则按钮是启用的。
与大多数浏览器不同,Firefox 会在页面加载后保留 <button>
的动态禁用状态。使用 autocomplete
属性来控制此功能。
属性交互
disabled
和 readonly
的区别在于,只读控件仍然可以工作并且仍然可以聚焦,而禁用控件无法获得焦点,不会随表单提交,并且通常在启用之前不作为控件起作用。
由于禁用的字段无法更改其值,因此 required
对同时指定了 disabled
属性的输入没有影响。此外,由于元素变得不可变,大多数其他属性,如 pattern
,在控件启用之前都没有效果。
注意: required
属性不允许在指定了 disabled
属性的输入上使用。
可用性
浏览器将禁用的表单控件显示为灰色,因为禁用的表单控件是不可变的,不会接收焦点或任何浏览事件(如鼠标点击或与焦点相关的事件),也不会随表单提交。
如果存在于支持的元素上,:disabled
伪类将匹配。如果未包含该属性,则 :enabled
伪类将匹配。如果元素不支持 disabled 属性,该属性将不起作用,包括不会被 :disabled
和 :enabled
伪类匹配。
约束验证
如果元素被 disabled
,则元素的 value 无法获得焦点,也无法被用户更新,并且不参与约束验证。
示例
当表单控件被禁用时,许多浏览器默认会以较浅的、灰色的颜色显示它们。以下是禁用复选框、单选按钮、<option>
和 <optgroup>
的示例,以及一些通过祖先
元素上设置的 disabled 属性而被禁用的表单控件。<fieldset>
被禁用,但 <option>
本身并未被禁用。我们可以通过将属性添加到该元素而不是其子级来禁用整个 <select>
<select>
。
<fieldset>
<legend>Checkboxes</legend>
<p>
<label>
<input type="checkbox" name="ch-box" value="regular" /> Regular
</label>
</p>
<p>
<label>
<input type="checkbox" name="ch-box" value="disabled" disabled /> disabled
</label>
</p>
</fieldset>
<fieldset>
<legend>Radio buttons</legend>
<p>
<label> <input type="radio" name="radio" value="regular" /> Regular </label>
</p>
<p>
<label>
<input type="radio" name="radio" value="disabled" disabled /> disabled
</label>
</p>
</fieldset>
<p>
<label
>Select an option:
<select>
<optgroup label="Group 1">
<option>Option 1.1</option>
</optgroup>
<optgroup label="Group 2">
<option>Option 2.1</option>
<option disabled>Option 2.2</option>
<option>Option 2.3</option>
</optgroup>
<optgroup label="Group 3" disabled>
<option>Disabled 3.1</option>
<option>Disabled 3.2</option>
<option>Disabled 3.3</option>
</optgroup>
</select>
</label>
</p>
<fieldset disabled>
<legend>Disabled fieldset</legend>
<p>
<label>
Name: <input type="radio" name="radio" value="regular" /> Regular
</label>
</p>
<p>
<label>Number: <input type="number" /></label>
</p>
</fieldset>
规范
规范 |
---|
HTML # attr-fe-disabled |
HTML # attr-optgroup-disabled |
HTML # attr-option-disabled |
浏览器兼容性
html.elements.button.disabled
加载中…
html.elements.fieldset.disabled
加载中…
html.elements.input.disabled
加载中…
html.elements.optgroup.disabled
加载中…
html.elements.option.disabled
加载中…
html.elements.select.disabled
加载中…
html.elements.textarea.disabled
加载中…