type="reset" 按钮和 form.reset() 仅将表单控件恢复为 html 初始属性值(如 value、selected),而非清空;它不触发 input/change 事件,不影响框架状态,也不重置 js 动态设置的值,故不可替代手动清空逻辑。

input 元素的 type="reset" 不会清空字段,而是把所有表单控件恢复到页面加载时的初始值——这点常被误认为“清空”,结果一点击发现输入框里还有默认文字、下拉框仍选着某个选项,甚至 required 字段也“没反应”,其实是它按初始状态还原了。
重置按钮只还原初始值,不重置用户修改后的空状态
比如:<input name="username" value="请输入用户名">,用户删掉提示文字后留空,点 type="reset" 按钮,它会把内容设回 "请输入用户名",而不是清成空字符串。同理,<select></select> 会回到第一个 <option></option>(如果该 <option></option> 有 selected 属性),<textarea></textarea> 也会恢复其初始文本内容。
- 初始值由
value、checked、selected等属性决定,不是 DOM 当前值 - 没有显式设置
value的text输入框,初始值为空字符串,重置后确实清空 -
type="date"或type="email"等 HTML5 类型,初始值仍是空,除非你写了value="2026-08-11"
type="reset" 和 form.reset() 行为完全一致
用 JS 调用 document.querySelector('form').reset() 和点 <input type="reset"> 按钮效果一样,都是触发原生重置逻辑。但注意:它不会触发 input 或 change 事件,也不会执行自定义验证逻辑。
- 如果你监听了
input事件做实时校验,重置后这些校验状态(比如红边框、错误提示)不会自动清除,得手动处理 -
reset()不会重置通过 JS 动态设置的value,只认 HTML 初始属性值 - 若表单用了
FormData或 React/Vue 等框架绑定数据,reset()只影响 DOM,不影响框架内部状态
别用 type="reset" 替代清空逻辑
很多场景其实要的是“清空所有字段”,比如搜索框重置、多步骤表单跳转回第一步。这时硬用 type="reset" 往往出错,因为它的语义是“回到初始态”,而初始态未必是空。
- 想彻底清空?用 JS 遍历
form.elements,对每个元素设.value = ''、.checked = false、.selectedIndex = 0等 - 想保留部分字段(如隐藏域、token)?
type="reset"会一并还原,不适合;必须手写清空逻辑 - 移动端键盘弹出后点重置,有时焦点残留或键盘不收起,属于浏览器兼容性问题,
blur()+focus()可缓解
真正容易被忽略的是:重置行为依赖 HTML 层面的初始属性,和 JS 运行时状态无关;一旦你动态改过 value 却没同步更新属性,reset() 就会“失灵”。所以别指望它帮你兜底,该手动管理的还得手动管。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











