启用原生表单控件只需设 element.disabled = false;禁用时同理设为 true;避免 removeattribute 或错误 setattribute;读取非表单元素数值须用 textcontent 转数字再赋值。

直接设 element.disabled = false 就行,别删属性、别写字符串、别碰 CSS。
button / input / select 等原生表单控件怎么启用
所有带 disabled 属性的原生控件(button、input、select、textarea、optgroup、option)都支持布尔赋值:
-
el.disabled = false启用,语义清晰、兼容性好、可访问性正确 - 别用
el.removeAttribute('disabled')—— 在旧版 Safari 中可能让后续el.disabled = true失效 - 别写
el.setAttribute('disabled', 'false')或el.setAttribute('disabled', '')—— 只要属性存在,就禁用 - 初始禁用写 HTML:
<button disabled>提交</button>;JS 启用时只写btn.disabled = false
从 div 读数值来启用按钮的常见坑
很多场景下,按钮是否启用取决于 <div id="counter">5</div> 这类非表单元素的内容,容易出错:
- 不能用
div.value——div没有value属性,会返回undefined - 必须用
div.textContent或div.innerText获取文本,再转数字:+div.textContent || 0 - 条件判断别绕弯:
btn.disabled = +counter.textContent 比 if/else 更简洁可靠 - 如果数值是异步更新(比如 WebSocket 推送),记得在更新后重新执行启用逻辑,而不是只 onload 跑一次
radio / checkbox 组启用时要同步清理选中状态
启用一组 radio 或 checkbox 时,不能只设 disabled = false,否则用户之前选中的值可能残留,导致提交矛盾数据:
- 先启用:
rd1.disabled = false; rd2.disabled = false; - 再清空(仅对 radio):
rd1.checked = false; rd2.checked = false; - 对 checkbox,是否清空取决于业务逻辑 —— 有些场景需要保留用户上次选择,有些必须重置
- 禁用时也得同步清空,否则用户切回“启用”状态后,旧选中项仍生效
最常被忽略的是:禁用不等于隐藏。用 disabled 是唯一能让控件真正退出表单提交、键盘焦点和屏幕阅读器交互的方式;任何靠 opacity 或 pointer-events 的做法,都会在可访问性和表单语义上翻车。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











