vee 验证仅适用于第一个字段?

vee validate works for the first field only?

我创建了两个模式(loginModal 和 registerModal),用户可以在它们之间动态切换。

"VeeValidate" 插件有问题,如果我向错误包中添加内容,它只会验证第一个字段。

我在这里为这个问题创建了一个演示: https://2o2z51km00.codesandbox.io/ 资源: https://codesandbox.io/s/2o2z51km00

  1. 打开 loginModal(默认打开)。
  2. 提交默认登录信息(您将看到“您输入的内容无效 凭据”消息)。
  3. 在看到该消息后切换 注册模式。
  4. 提交注册模式(输入为空)

如您所见,它仅突出显示第一个字段(全名字段)而忽略其他字段。

为什么会这样?

花了很多时间,并没有意识到从 2.1 到 2.2.3 的最新版本的最新变化。

问题是多个模式尝试使用相同的名称。这可以通过使用范围来解决,因为我已经在你的项目的分支中实现了。

https://codesandbox.io/s/vv0jqprpj0

所以通过添加输入:

data-vv-scope="SCOPE"

并使用它来验证字段

this.$validator.validate('SCOPE.*')

附带说明一下,您在 RegisterModal 上使用 v-show 来显示错误,在 LoginModal 上使用 v-if - 正确的是使用 v-if