Vuelidate 表单验证后错误信息不更新是怎么回事? A. 光磊 提问于 2026-02-28 07:39:18 阅读 25 交互 我用 Vuelidate 做表单验证,输入框失去焦点时会触发验证,但修改内容后错误提示没消失,明明值已经合法了。试过调用 $touch() 和 $reset() 都不行。 这是我的验证规则代码: const rules = { email: { required, email } }; const v$ = useVuelidate(rules, { email }); Vue3状态管理 我来解答 赞 5 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 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 渲染。 回复 点赞 2026-02-28 21:05 加载更多 相关推荐 1 回答 20 浏览 VeeValidate 表单验证后怎么手动清除错误信息? 我用 VeeValidate 做表单验证,提交失败后错误信息一直显示,切换到其他页面再回来还是存在。试过 resetForm() 但好像没生效,是不是用法不对? 这是我的组件代码: <templ... 一丽珍 交互 2026-02-25 11:03:20 1 回答 20 浏览 VeeValidate 表单验证时如何动态修改错误提示样式? 我用 VeeValidate 做表单验证,现在想根据验证状态动态改变错误信息的样式,比如输入框无效时让错误文字变红。但发现默认的 <ErrorMessage> 组件好像没法直接加 clas... 夏侯焦铭 交互 2026-02-24 19:44:20 1 回答 74 浏览 表单验证时如何实时监听输入并动态显示错误提示? 我正在做一个注册表单,想在用户输入时就实时验证邮箱格式,但不知道怎么把验证逻辑和DOM更新结合起来。试过用input事件监听,但错误信息总是显示不对。 比如下面这段代码,输入非法邮箱时没反应,控制台也... 一乐萱 交互 2026-02-24 16:55:21 2 回答 22 浏览 Vue表单中如何用自定义验证确保GDPR同意框被勾选后才提交? 我在做一个用户注册表单,需要用户勾选隐私政策同意框才能提交。用了vuelidate做验证,但发现即使没勾选也能提交,代码哪里出错了? <template> <form @submit... Top丶兴敏 安全 2026-02-13 13:06:33 1 回答 56 浏览 Brick Next表单组件动态更新数据后验证不触发怎么办? 在用Brick Next的Form组件时,我通过setValues动态更新了表单数据,但手动调用validate方法始终没反应。之前按文档写过静态校验没问题,动态更新就失效了。 import { Fo... 设计师园园 框架 2026-02-18 11:49:24 2 回答 37 浏览 Vue表单提交时创建和更新逻辑怎么区分? 在用Vue做CRUD时遇到了问题,同一个表单既用来创建新数据又用来更新现有数据。但提交时无论怎么改,更新操作总是触发创建接口。 我尝试在data里用isEditing标记状态,然后根据这个值切换表单标... Des.克样 交互 2026-02-16 12:27:29 2 回答 25 浏览 XState嵌套状态的上下文数据怎么更新会报undefined错误? 我在用XState做表单验证时,定义了并行状态机包含form和validation两个状态。当尝试更新form.name字段时,控制台报错"Cannot set property 'name' of ... 宇文素红 框架 2026-02-12 12:48:27 2 回答 50 浏览 表单验证时,如何让错误提示在输入框下方而不是覆盖内容? 我在做一个注册表单的验证,当用户名输入错误时,错误提示文字总是盖在输入框上层,而不是显示在下方。之前用绝对定位包裹输入框和提示文字,设置了position: relative在父容器,然后给提示div... 一嘉蕊 交互 2026-02-05 15:37:34 1 回答 50 浏览 输入框错误提示怎么自动隐藏不起来? 我给表单加了实时验证,但输入正确后错误提示就是不消失,这是怎么回事啊? 比如这个邮箱输入框,当我输入错误格式后提示会显示,但改成正确格式时提示还是卡在那里: 请输入正确邮箱格式 我用的是blur事件监... ❤忠娟 交互 2026-01-29 16:55:45 2 回答 71 浏览 React表单提交时验证码验证总是失败怎么办? 我在开发用户重置密码功能时,用React写了带验证码的表单,但每次提交后端都返回验证码错误。明明前端生成的验证码和输入的一致,这是为什么呢? 我按照教程在后端生成验证码图片后,把验证码文本存在sess... 程序猿艺诺 安全 2026-01-28 00:37:35
useVuelidate的第二个参数是个普通对象,不是响应式的,所以值变了验证状态不更新。改成这样:
模板里记得用
v-model.trim绑定,配合v$.$model或者直接绑定state.email,然后在@blur时调用v$.email.$touch()。另外说个安全问题,邮箱验证规则别只依赖前端,后端必须再做一次校验。前端的邮箱正则很容易绕过,而且用户可以禁用 JavaScript 直接提交表单。Vuelidate 的 email 验证器相对宽松,生产环境建议配合后端做格式校验和唯一性检查,防止恶意数据入库。
还有输入内容记得做 XSS 过滤,特别是这种表单字段,别直接 innerHTML 渲染。