zoukankan      html  css  js  c++  java
  • VeeValidate表单验证插件

    VeeValidate

    1.js逻辑部分

    // 使用
    
    // 在utils目录下新建一个 validate.js文件放置插件配置
    
    import Vue from 'vue'
    
    // 加载需要使用的验证组件
    import { ValidationProvider, ValidationObserver, extend } from 'vee-validate'
    
    // 加载内置的验证规则
    import * as rules from 'vee-validate/dist/rules'
    
    // 加载中文语言包
    import { messages } from 'vee-validate/dist/locale/zh_CN.json'
    
    // 注册全局组件
    Vue.component('ValidationProvider', ValidationProvider)
    Vue.component('ValidationObserver', ValidationObserver)
    
    // 循环内置规则定义所有的内置验证规则
    Object.keys(rules).forEach(rule => {
      extend(rule, {
        ...rules[rule],
        message: messages[rule]
      })
    })
    
    // 通过 extend(String) 自定义验证规则, 第一个参数是自定义验证规则的名称,第二个参数可以是一个函数,也可以是一个对象
    
    extend('mobile', value => {
    
      if (value >= 0) {
        return true;
      }
    
      return '{_field_}不能为空'
    })
    
    
    // 如果需要多个配置的话,第二个参数应该为对象
    
    extend('mobile', {
        
        // 第一个参数是文本框的值,第二个参数是验证规则传过来的参数
      validate: (value, args) => {
        console.log(args)
        return /^1(3|5|6|7|8|9)d{9}$/.test(value)
      },
        
        // 错误信息提示
      message: '{_field_}格式有误',
    
      params: ['min', 'max', 'sex']
    })
    
    // _field_:是ValidationProvider上面的name属性字段
    
    
    // 如果错误信息提示为字符串不够灵活也可以写成函数
    
    extend('mobile', {
    
      validate: (value, args) => {
        console.log(args)
        return /^1(3|5|6|7|8|9)d{9}$/.test(value)
      },
    
        // 第一个参数就是name字段,第二个参数是传递进来的参数
      message: (fieldName, placeholders) => {
    
        return `${fieldName}格式有误${placeholders.min}`
      }
      params: ['min', 'max', 'sex']
    })

    2.html模板部分

    <template>
    
        <!-- 
    
            参数详解:
    
                1.name:信息提示的字段名称
    
                2.rules:绑定自定义验证的规则
    
                3.v-slot:可以拿到错误提示的信息
    
                4.bails:Boolean类型,为true只能拿到一条错误信息,false可以拿到所有的错误提示信息,注意错误信息是一个数组
         -->
            
    
        <!-- 包裹整个表单验证 -->
        <ValidationObserver ref="form">
            
            <!-- 包裹每一个验证的表单元素 -->
            <ValidationProvider
    
                name: '手机号',
    
                rules="required|mobile:3,6,7"
    
                v-slot="v"
        
            >
    
                <input type="text" v-model="username" />
    
                <span style="color: red;">{{ v.errors[0] }}</span>
        
            </ValidationProvider>
        <ValidationObserver/>
    <template>

    3.手动验证

    // 比如我们点击提交按钮之后再做一次验证
    
    // 用来单独验证某一个字段
    import { validate } from 'vee-validate'
    
    // this.$refs.form拿到最外层包裹的实例调用validate手动验证
    
    const success = await this.$refs.form.validate()
    
    if (!success) {
    
         const errors = this.$refs.form.errors
    
         // 如果item[0]是空数组的话说明是验证成功的,里面没有错误信息
    
        // 反之就是没有验证通过的返回返回,在提示出来
    
        const item = Object.values(errors).find(item => item[0])
    
        this.$toast(item[0])
    
        return
    }

     

  • 相关阅读:
    linux 运维必备150个命令
    CentOS 6.5 安装nginx 1.6.3
    centos 6.5 zabbix3.0.4 监控apache
    iOS更改ShareSDK默认的分享功能界面
    使用AFNetworking时, 控制器点击返回销毁了, 但还是会执行请求成功或失败的block, 导致野指针异常
    iOS性能优化
    'Invalid update: invalid number of rows in section xx. The number of rows contained in an existing section after the update (xxx)...
    iOS 改变UITextField中光标颜色
    使用ShareSDK完成Facebook第三方登录和Facebook分享时没办法跳转到Facebook应用
    [!] Unable to satisfy the following requirements:
  • 原文地址:https://www.cnblogs.com/zxuedong/p/12884076.html
Copyright © 2011-2022 走看看