直接在标签加disabled布尔属性即可禁用,存在即生效,如;js应使用element.disabled = true/false控制,禁用后字段不参与表单提交,而readonly仅禁编辑但会提交值。

怎么用 disabled 属性禁用 input 输入框
直接在 <input> 标签里加 disabled 属性就行,它是个布尔属性,只要存在就生效,不需要赋值:
<input type="text" disabled>浏览器会灰掉输入框、阻止聚焦和输入,且表单提交时这个字段的值不会被发送。注意:写成
disabled="false" 或 disabled="0" 没用——只要属性存在,就禁用。
JavaScript 动态切换 disabled 状态的正确写法
别用 element.setAttribute('disabled', 'disabled') 或删属性这种老套路,容易出错。现代写法统一用 disabled 属性的布尔值控制:
- 禁用:
inputEl.disabled = true - 启用:
inputEl.disabled = false - 检查当前状态:
if (inputEl.disabled) { ... }
removeAttribute('disabled') 虽然能启用,但后续再设 disabled = true 时可能在某些旧版 Safari 里失效。
为什么 disabled 的 input 值不提交,而 readonly 会提交
这是关键区别,选错就丢数据:
-
disabled:字段完全被排除在表单数据之外,FormData和序列化结果里都找不到它 -
readonly:用户不能编辑,但值照常提交,DOM 上也保持可聚焦(只是不能改) - 如果只是想“显示但不让改”,又需要后端收到该字段,必须用
readonly,而不是disabled
disabled,结果后端收不到用户名——其实该用 readonly。
disabled 对样式和可访问性的影响
默认浏览器会把 disabled 元素变灰、降低透明度,但这个样式不可靠:
- CSS 里用
:disabled伪类可以自定义样式,比如input:disabled { background: #f5f5f5; cursor: not-allowed; } - 屏幕阅读器会跳过
disabled元素,所以别把重要提示放里面;如果要提示用户“此处暂不可用”,得额外加<span></span>或 aria 描述 - 移动端上,
disabled元素无法触发 touch 事件,哪怕你绑了onclick也不会执行
aria-disabled="true" 配合 CSS 控制更灵活。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











