只有原生表单控件(input、textarea、select、button、optgroup、option、fieldset)支持disabled属性,div、span、p、label等非表单元素添加该属性无效;fieldset设disabled会递归禁用其内子表单控件,但legend不受影响。

哪些元素能用 disabled 属性
只有原生表单控件才真正响应 disabled:包括 input、textarea、select、button、optgroup、option 和 fieldset。给 div、span、p 或 label 加 disabled 属性完全无效——浏览器直接忽略,既不变灰也不阻止点击。
特别注意:fieldset 上设 disabled 会递归禁用所有子表单控件(比如里面的 input 和 select),但它的 legend 不受影响;若要禁用整个区域含标题,得额外加 CSS 或 JS 控制。
disabled 的写法和常见错误
disabled 是布尔属性,存在即生效。正确写法是直接写 disabled,不带等号也不赋值:
<input type="text" disabled><select disabled><option>A</option></select><button disabled>提交</button>
以下写法全是错的:
-
disabled="true"或disabled="false"—— 只要属性存在,就禁用,值是什么无关紧要 -
disabled=""—— 虽然多数浏览器能识别,但语义不严谨,易在旧环境出问题 - 给
input同时设readonly和disabled——disabled优先级更高,readonly被覆盖且无意义
JavaScript 动态控制 disabled 的正确姿势
别用 setAttribute 或 removeAttribute,直接操作 DOM 属性最可靠:
- 禁用:
el.disabled = true - 启用:
el.disabled = false - 检查状态:
if (el.disabled) { ... }
容易踩的坑:
- 脚本执行时 DOM 还没加载完,
document.getElementById()返回null→ 把脚本放
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











