disabled 属性会导致 form 中 input 元素不被提交?

回答:会。

这是第二次遇到这个问题了,之前发生过一次,包括现在也挺震惊的。因为之前从来没有意识到过这个问题,或者说 disabled 属性没有演变成一个 bug。

一开始需求是要有条件的禁用 input 修改,增加了 php 判断条件之后自测没有问题。然后公司测试发现提交表单之后,报错:字段没有填写。打开开发者工具,测试表单提交发现,根本没有这个字段,怀疑是 disabled 问题。问了 deepseek,确认:

这是浏览器的默认行为,与前端框架无关

核心机制:disabledreadonly 的区别

这是两个容易混淆的属性,核心区别在于是否随表单提交以及是否可交互。

属性用户交互表单提交典型用途
disabled不可用、无法获得焦点、无法编辑不提交让某个字段完全不可用,且不需要其值。例如,根据条件禁用的输入框。
readonly只读,但可以获得焦点会提交让用户看到但不能修改某个值,但又必须将该值提交给服务器。例如,系统生成的订单号。

简单来说,如果你需要一个无法编辑但必须提交的值,应该使用 readonly 而不是 disabled

果然,活到老学到老哦!

文章目录