Vue + Vee Validate 3 触发手动验证

Dam*_*ian 4 vue.js vee-validate

我的表单验证几乎可以正常工作了 - 我正在使用带有 Vue.js 的 Vee Validate 3。Vee Validate 的大多数示例都是针对版本 2 的,所以我有点挣扎。

我遇到的问题是在提交表单时触发验证。

如果我先单击文本字段以关注它,然后单击提交,则会触发验证并看到错误消息。

但是,如果我没有先单击文本字段而只是单击提交按钮,则我看不到错误消息。

在单击提交之前,如何使这项工作无需关注文本字段?

更新

奇怪的是,控制台TypeError: this.validate is not a function在两种情况下都显示错误- 无论验证是否有效。

<ValidationProvider rules="required" v-slot="{ validate, errors }">
  <div>
    <input type="text" rules="required">
    <p id="error">{{ errors[0] }}</p>
  </div>
</ValidationProvider>

<script>
export default {
  methods: {
    async validateField() {
      const valid = await this.validate()
    }
  }
};
</script>
Run Code Online (Sandbox Code Playgroud)

Dam*_*ian 10

Adam 通过 ValidationObserver 为我指明了正确的方向。

这段代码对我有用...

<ValidationObserver ref="observer" v-slot="{ invalid }" tag="form" @submit.prevent="submit()">
  <ValidationProvider rules="required" v-slot="{ errors }">
    <input type="text">
    <p id="error">{{ errors[0] }}</p>
  </ValidationProvider>
  <button @click="submit()">Submit>/button>
</ValidationObserver>

<script>
import { VslidationProvider, ValidationObserver } from 'vee-validate'
import { required } from 'vee-validate/dist/rules'

export default {
  methods: {
    async submit () {
      const valid = await this.$refs.observer.validate()
    }
  }
};
</script>
Run Code Online (Sandbox Code Playgroud)