zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    剑指offer 21:包含min函数的栈
    导航页的开发--手机web app开发笔记(四)
    manifest.json 解析--手机web app开发笔记(三-2)
    manifest.json 解析--手机web app开发笔记(三-1)
    默认文档解析--手机web app开发笔记(二)
    手机web app开发笔记
    JS开发备忘笔记-- Javascript中document.execCommand()的用法
    JS时间格式转换
    HBuilderx 模拟器调试设置
    截图小工具开发笔记
  • 原文地址:https://www.cnblogs.com/zjianfei/p/15555042.html
Copyright © 2011-2022 走看看