value属性需显式设置才生效,radio、checkbox、submit、button及option依赖它传递数据;placeholder仅为提示,不参与提交;select值取自选中option的value,未设则用文本内容。

value 属性不是所有表单控件都“默认有值”的——它只在你显式写出来时才生效,浏览器不会自动填充。比如 <input type="text"> 不写 value,提交时就是空字符串;而 <input type="radio" checked> 的选中状态和 value 是两回事。
哪些控件必须靠 value 才能传数据
对于 radio、checkbox、submit、button 这类控件,value 决定了提交给服务器的实际内容,不设就等于没值:
-
radio:没value时,即使checked,提交的也是空字符串(不是"on") -
checkbox:未勾选不提交;勾选但没value,提交的是"on"(这是浏览器默认行为,不是你想要的) -
submit和button:按钮文本显示靠value(submit)或innerText(button),但只有value影响提交字段名/值对中的值
value 和 placeholder 完全不是一回事
placeholder 是提示文字,用户一输入就消失,且不参与提交;value 是真实初始值,会随表单一起发到后端:
-
<input type="text" placeholder="请输入邮箱">→ 提交时若没输内容,字段为空 -
<input type="text" value="admin@example.com">→ 提交时字段值就是"admin@example.com",哪怕用户没动过它 - 两者可以共存,但语义绝不混用:
<input type="text" value="admin" placeholder="用户名">
select 和 option 的 value 行为容易被忽略
<select> 本身没有 value 属性,它的值来自选中的 <option> 的 value。如果 <option> 没写 value,浏览器会把标签内文本作为提交值:
立即学习“前端免费学习笔记(深入)”;
-
<option value="us">United States</option>→ 提交us -
<option>United States</option>→ 提交"United States"(含空格、大小写、特殊字符) - 如果第一个
<option>带selected,但没value,那表单初始值就是那段文本,不是空
真正容易出错的地方是:开发时看着界面“好像有默认值”,但后端收不到——大概率是忘了给 radio/checkbox/option 显式写 value,或者误把 placeholder 当成了初始值。别依赖视觉判断,检查 DOM 中实际的 value 属性是否存在且合理。



















