formnovalidate 属性仅对 type="submit" 的按钮有效,用于跳过原生表单验证;type="button" 或 "reset" 无效,且需确保按钮在 form 内或通过 form 属性关联;它不影响 submit 事件触发和 javascript 提交,服务端校验不可省略。

formnovalidate 属性只对 type="submit" 或 type="button" 有效
很多人加了 formnovalidate 却没效果,第一反应是“属性写错了”,其实更可能是按钮类型不对。这个布尔属性只在提交类按钮上起作用,比如 <button type="submit"></button> 或 <input type="submit">。如果是 type="button",它根本不会触发表单提交,自然也用不上 formnovalidate;而 type="reset" 更不支持该属性。
常见错误现象:<button type="button" formnovalidate>跳过验证</button> 点击后无提交行为,控制台也无报错,表单静默失败。
- 必须确保按钮的
type是submit -
formnovalidate是布尔属性,写上即生效,无需赋值(formnovalidate="false"反而会当作字符串真值处理) - 如果按钮在
<form></form>外部,需用form属性关联表单 ID,否则formnovalidate不生效
多个提交按钮共存时,formnovalidate 的作用范围是当前点击的按钮
一个表单里可以有多个 <button type="submit"></button>,有的带 formnovalidate,有的不带。浏览器只检查「被点击的那个按钮」是否声明了该属性,不会全局禁用验证。这是关键机制,也是容易误判的地方。
使用场景:登录页同时提供「快速登录(跳过邮箱格式校验)」和「完整注册(严格校验)」两个提交入口。
- 带
formnovalidate的按钮点击时,绕过所有required、pattern、type="email"等原生验证 - 不带该属性的按钮仍按标准流程触发验证,哪怕它们属于同一个
<form></form> - 注意:JavaScript 调用
form.submit()不受formnovalidate影响,它始终跳过 HTML5 验证 —— 这是另一个独立机制
formnovalidate 不影响 JavaScript 的 addEventListener('submit')
即使点击的是带 formnovalidate 的按钮,只要表单最终提交,submit 事件仍会正常触发。这点常被误解为“跳过验证 = 跳过 submit 事件”。实际只是跳过了浏览器内置的表单校验拦截逻辑。
性能 / 兼容性影响:所有现代浏览器(Chrome 10+、Firefox 4+、Safari 5.1+、Edge)均支持,无 polyfill 需求;但若你依赖 event.preventDefault() 在 submit 处理中做自定义校验,记得先检查 event.submitter?.hasAttribute('formnovalidate') 来区分意图。
-
event.submitter是触发提交的元素,IE 不支持,但 IE 本身也不支持formnovalidate - 服务端永远不能信任前端跳过验证,
formnovalidate仅用于改善特定交互路径的用户体验 - 不要用它替代后端校验,哪怕只是“临时调试”——容易遗忘并上线
与 novalidate 属性的区别:一个是按钮级,一个是表单级
novalidate 写在 <form></form> 标签上,作用于整个表单的所有提交行为;而 formnovalidate 是按钮上的开关,粒度更细。两者可共存,但优先级关系明确:如果表单设了 novalidate,那所有提交都跳过验证,此时 formnovalidate 就显得多余。
容易踩的坑:在调试时给 <form novalidate></form> 加了该属性,上线前忘了删,结果所有提交都绕过校验,连带掩盖了本该暴露的字段逻辑问题。
- 开发阶段慎用
novalidate,优先用formnovalidate控制局部行为 - CI 流程中可用正则扫描源码,告警
<form>]*novalidate</form>出现位置 -
formnovalidate的真实价值在于渐进式表单:比如多步骤注册中,“下一步”按钮跳过验证,“提交”按钮才校验全部字段
formnovalidate 是它唯一的“例外通道”,但这个通道不延伸到 JS 事件流,也不穿透到服务端。真正容易被忽略的,是开发者常把“前端跳过”等同于“逻辑可绕过”,而实际上,只要提交发生,后端就必须重做一遍校验逻辑。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











