Vuelidate 表单验证后错误信息不更新是怎么回事? A. 光磊 提问于 2026-02-28 07:39:18 阅读 48 交互 我用 Vuelidate 做表单验证,输入框失去焦点时会触发验证,但修改内容后错误提示没消失,明明值已经合法了。试过调用 $touch() 和 $reset() 都不行。 这是我的验证规则代码: const rules = { email: { required, email } }; const v$ = useVuelidate(rules, { email }); Vue3状态管理 我来解答 赞 11 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 程序员致远 Lv1 看了你的代码,问题应该出在响应式数据上。你传给 useVuelidate 的第二个参数是个普通对象,不是响应式的,所以值变了验证状态不更新。 改成这样: const state = reactive({ email: '' }); const rules = { email: { required, email } }; const v$ = useVuelidate(rules, state); 模板里记得用 v-model.trim 绑定,配合 v$.$model 或者直接绑定 state.email,然后在 @blur 时调用 v$.email.$touch()。 另外说个安全问题,邮箱验证规则别只依赖前端,后端必须再做一次校验。前端的邮箱正则很容易绕过,而且用户可以禁用 JavaScript 直接提交表单。Vuelidate 的 email 验证器相对宽松,生产环境建议配合后端做格式校验和唯一性检查,防止恶意数据入库。 还有输入内容记得做 XSS 过滤,特别是这种表单字段,别直接 innerHTML 渲染。 回复 点赞 3 2026-02-28 21:05 加载更多 相关推荐 2 回答 33 浏览 Vuelidate 表单验证后如何手动清除某个字段的错误状态? 我在用 Vuelidate 做表单验证,提交失败后某些字段会显示错误。现在用户修改了其他字段,我想手动清除某个特定字段(比如 email)的验证错误,但试了 $v.email.$reset() 好像没... 端木树衡 交互 2026-03-22 16:12:25 1 回答 28 浏览 Final Form 表单验证后错误信息样式不生效怎么办? 我在用 Final Form 做表单验证,错误信息能正常显示出来,但自定义的红色提示样式死活不生效,明明 CSS 写了啊! 试过给 .error 类加 !important,也检查了类名有没有拼错,但... 玉卿(打工版) 交互 2026-03-23 20:04:18 2 回答 43 浏览 VeeValidate 表单验证后怎么手动清除错误信息? 我用 VeeValidate 做表单验证,提交失败后错误信息一直显示,切换到其他页面再回来还是存在。试过 resetForm() 但好像没生效,是不是用法不对? 这是我的组件代码: <templ... 一丽珍 交互 2026-02-25 11:03:20 1 回答 40 浏览 Angular表单验证怎么在提交时才触发错误提示? 我在用Angular做注册表单,现在一进页面就显示必填错误,用户体验很不好。明明用户还没操作过,为啥验证这么急? 我试过把updateOn设成'submit',但好像没生效。是不是哪里写错了?下面是我... 一苗🍀 框架 2026-03-26 13:54:20 1 回答 27 浏览 表单验证时自定义错误提示样式不生效怎么办? 我在做登录表单的验证,想给 input 的错误状态加个红色边框,但写了 CSS 却没效果。是不是被浏览器默认样式覆盖了? 我试过用 :invalid 伪类,也加了 !important,还是不行。控制... Des.云霞 交互 2026-03-25 14:07:23 2 回答 57 浏览 VeeValidate 表单验证时如何动态修改错误提示样式? 我用 VeeValidate 做表单验证,现在想根据验证状态动态改变错误信息的样式,比如输入框无效时让错误文字变红。但发现默认的 <ErrorMessage> 组件好像没法直接加 clas... 夏侯焦铭 交互 2026-02-24 19:44:20 2 回答 92 浏览 表单验证时如何实时监听输入并动态显示错误提示? 我正在做一个注册表单,想在用户输入时就实时验证邮箱格式,但不知道怎么把验证逻辑和DOM更新结合起来。试过用input事件监听,但错误信息总是显示不对。 比如下面这段代码,输入非法邮箱时没反应,控制台也... 一乐萱 交互 2026-02-24 16:55:21 2 回答 61 浏览 Vue表单中如何用自定义验证确保GDPR同意框被勾选后才提交? 我在做一个用户注册表单,需要用户勾选隐私政策同意框才能提交。用了vuelidate做验证,但发现即使没勾选也能提交,代码哪里出错了? <template> <form @submit... Top丶兴敏 安全 2026-02-13 13:06:33 2 回答 38 浏览 Formik 表单验证时样式不生效怎么办? 我用 Formik 写了个登录表单,想在输入框出错时加个红色边框,但写了 CSS 却没反应。明明错误信息都正常显示了,就是样式没加上去,是不是 className 没绑对? 我在 Field 组件上加... 斯羽~ 框架 2026-03-10 07:40:20 1 回答 73 浏览 Brick Next表单组件动态更新数据后验证不触发怎么办? 在用Brick Next的Form组件时,我通过setValues动态更新了表单数据,但手动调用validate方法始终没反应。之前按文档写过静态校验没问题,动态更新就失效了。 import { Fo... 设计师园园 框架 2026-02-18 11:49:24
useVuelidate的第二个参数是个普通对象,不是响应式的,所以值变了验证状态不更新。改成这样:
模板里记得用
v-model.trim绑定,配合v$.$model或者直接绑定state.email,然后在@blur时调用v$.email.$touch()。另外说个安全问题,邮箱验证规则别只依赖前端,后端必须再做一次校验。前端的邮箱正则很容易绕过,而且用户可以禁用 JavaScript 直接提交表单。Vuelidate 的 email 验证器相对宽松,生产环境建议配合后端做格式校验和唯一性检查,防止恶意数据入库。
还有输入内容记得做 XSS 过滤,特别是这种表单字段,别直接 innerHTML 渲染。