VeeValidate 中文文档

介绍

VeeValidate 是专用于 Vue.js 的验证库。它有很多开箱即用的验证规则,也支持自定义验证规则。

安装

可以通过 npm 或 CDN 来安装该插件

npm:

npm install vee-validate --save

CDN:
2 个国外的 CDN,国内估计危险

<script src="https://cdn.jsdelivr.net/npm/vee-validate@latest/dist/vee-validate.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vee-validate@latest/dist/vee-validate.js"></script>

引入:

import Vue from 'vue';
import VeeValidate from 'vee-validate';
Vue.use(VeeValidate);

基础示例

我们需要做的就是将 'v-validate' 指令添加到我们想要验证的 input 输入框上,然后确保 input 输入框有一个 name 属性,用来生成错误消息。

之后,给指令传入一个 'rules' 字符串,它包含一系列的,使用 '|' 管道符分隔的验证规则。

对于下面的示例,验证规则非常简单。使用 'require' 来表示字段必填,'email' 来表示字段必须是一个邮箱。为了将这两个规则组合起来,我们将字符串值 'required|email' 作为 'v-validate' 表达式的值。

<input v-validate="'required|email'" name="email" type="text">

为了显示错误消息,我们简单地使用 'errors.first' 方法,来获取该字段生成的第一个错误:

<span>{{ errors.first('email') }}</span>

警告:客户端验证永远不能替代服务器端验证。确保在后端验证用户的任何输入。

指令修饰符

immediate  在页面加载后立即验证字段

 

<template>
    <input v-model="email" v-validate.immediate="'required|email'" name="field" type="text">
</template>

<script>
    export default {
        data: () => ({
            email: ''
        })
    };
</script>

 

continues 默认情况下,vee-validate 在验证字段规则时,使用 fastExit 策略。意味着当第一个规则验证失败时,它将停止,且不会验证其余规则。我们可以使用 .continues 修饰符,来强制验证所有规则,而不管这些规则的验证结果。

 

<template>
    <div>
        <input v-model="email" v-validate.continues="'required|email'" name="field" type="text">
        <ul>
            <li v-for="error in errors.collect('field')">{{ error }}</li>
        </ul>
    </div>
</template>

<script>
    export default {
        data: () => ({
            email: ''
        })
    };
</script>

我们可以配置 fastExit 选项为 false,来对所有字段启用 '.continues' 修饰符的行为。

提示:.continues 修饰符还有另一个用途,它禁用了 required 规则的检查,意味着,没有 required 规则但是值为空的字段,将不会被跳过。因此,确保我们的自定义规则也能够处理空值。

bails  反过来,如果我们已经配置了 fastExit 为 false,那么我们可以在特定字段上使用 .bail,在第一次验证失败后停止对其他规则的验证。

 

<template>
    <div>
        <input v-model="email" v-validate.bails="'required|email'" name="field" type="text">
        <span>{{ errors.first('email') }}</span>
    </div>
</template>

<script>
    export default {
        data: () => ({
            email: ''
        })
    };
</script>

 

Mixin  VeeValidate 注入了一个混入(mixin),通过以下属性来增强我们的 Vue 实例:

$validator - 一个 Validator 实例
errors - 一个 ErrorBag 实例
fields - 一个包含了所有已验证字段的状态标志的对象

提示: 我们可以设置 inject 配置选项为 false,来选择不自动在我们的实例中注入这些属性,但是我们将需要自己管理,提供 $validator 实例,来保证指令正常工作,参阅 '组件注入' 章节。

 

data-* Attributes data-* 属性为插件提供了一个可选的接口,用来指定应该发生什么,提供了一个简单的、Vue 版本兼容的 API。如果我们不喜欢将复杂的表达式传递给指令,它们将非常有用。

 

属性 - 描述
data-vv-as - 为字段指定一个漂亮的名称
data-vv-delay - 为触发验证指定的延迟时间(单位是毫秒)
data-vv-name - 为字段指定一个名称,用于组件验证并作为 inputs 输入框的回退名称
data-vv-scope - 为字段指定一个作用域。
data-vv-value-path - 指定组件 $data 中的 value 路径,用于检索组件当前值。仅用于组件。
data-vv-validate-on - 用于指定由 '|' 分隔的事件名称列表, 默认值因 inputs 输入框类型而异。

事件

vee-validate 在我们的 input 输入框上监听一组特定事件,这些事件一旦触发,就会触发该字段的验证。默认情况下,vee-validate 监听 input 事件。

如果 input 事件验证对用户来说过于激进,我们可以选择其他触发器(像:change)来触发验证。我们可以配置 vee-validate 的默认事件监听,甚至为特定字段指定特定事件。

改变默认事件:

Vue.use(VeeValidate, {
    events: 'change'
});

如果我们希望监听多个事件,包括自定义事件。只需要使用一个用 '|' 分隔的事件名列表:

Vue.use(VeeValidate, {
   events: 'change|custom'
});

改变每个字段的事件:

我们可以使用 '与 events 配置具有相同值的' data-vv-validate-on 属性,来指定字段进行验证的事件:

<input name="field" v-validate="'required'" data-vv-validate-on="change|custom">

禁用事件验证:

我们可能希望禁用由事件触发的所有验证,例如,我们只想在用户点击提交按钮后进行验证,我们可以通过为 events 配置,指定一个空字符串来实现,该字符串将禁用所有字段的所有监听器。

Vue.use('VeeValidate', {
    events: ''
});

或者在 'v-validate' 指令上使用 '.disable' 修饰符,禁用指定字段的事件验证

<input name="field" v-validate.disable="'required'">

触发验证:

this.$validator.validate()

 自定义组件

对自定义的组件(自定义select),数据发生变化,validate拿不到新的数据,需要使用 v-validate:userId="'required|phone'"指定检测userId,并在触发事件中使用 await this.$validator.validateAll()来对提示语关闭或显示(基于事件触发验证情况)

<template>
    <my-select :value="userId" name="userId" v-validate:userId="'required'"></my-select>
</template>

 

posted @ 2021-11-15 10:46  小阿飞ZJF  阅读(465)  评论(0编辑  收藏  举报