默认值必须用html属性(如selected、checked、value)写死,js赋值仅为临时状态;select用selected属性(无等号/引号/值),radio/checkbox用checked,textarea内容写标签内,disabled/readonly字段value仍需正确设置。

默认选项必须靠 HTML 属性写死在标签里,JS 赋值只是临时状态,刷新或 form.reset() 后就没了。
select 下拉框用 selected 设置默认项
只在你要默认选中的那个 <option></option> 上加 selected,不带等号、不带引号、不写值:<option value="admin" selected>管理员</option>。多个 selected 会出问题——浏览器只认第一个,DOM 结构也非法。
常见踩坑点:
-
<option disabled selected>请选择</option>不生效:disabled 和 selected 冲突,浏览器直接忽略 selected - 所有
<option></option>都 disabled?下拉框初始为空,提交时该字段无值 - 服务端模板里写
selected="{{ $user->role == 'admin' }}",可能渲染出selected="0",结果还是被当成 true —— 改用条件判断是否插入整个selected属性
radio 单选框靠 checked 控制默认选中
同一组 radio(name 完全一致)中,仅一个能带 checked;checked="true"、checked=""、checked 效果一样,只看属性是否存在。
容易出错的场景:
- name 拼错或大小写不一致(比如
name="color"和name="Colour"),导致本该互斥的选项变成两组,多个checked同时生效 - 用 CSS 隐藏原生控件后忘了保留
checked属性——伪元素样式切换全靠它触发,删了就失联 - 服务端渲染时,别用 JS 模拟勾选代替 HTML 属性,否则
form.reset()回不到你想要的状态
checkbox 复选框可多选默认,但 checked 必须逐个加
每个 <input type="checkbox"> 独立判断,默认状态互不影响。要默认勾选“邮件”和“短信”,就得分别写两个 checked:
<input type="checkbox" name="notify" value="email" checked><input type="checkbox" name="notify" value="sms" checked>
注意:
-
selected对 checkbox 完全无效——那是<option></option>的属性,写错标签静默失败 - value 值必须和后端接收逻辑严格一致(包括空格、大小写),否则提交时字段丢失
- 如果用框架(React/Vue),HTML 里的
checked会被状态绑定覆盖,得确保初始化数据和 option 的 value 类型、内容完全匹配
input 文本类控件用 value 设默认值
<input type="text">、<input type="email">、<input type="date"> 等,都靠 value 属性设默认内容。它不是 placeholder,是真实提交值。
关键细节:
-
value必须是字符串,数字要转成字符串:value="123"✅,value=123❌(HTML 属性没引号易截断) -
<textarea></textarea>的默认内容不能用value,得写在开始和结束标签之间:<textarea>默认文字</textarea> - type="date" 的
value必须是YYYY-MM-DD格式,错一位就变空;type="number" 的value不能含单位或逗号
最常被忽略的一点:disabled 或 readonly 字段的 value 也必须正确设置,否则表单提交或 JS 读取时拿不到预期值——它们只是不让用户改,不是不参与数据流。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











