vue项目中使用vee-validate表单验证

2023-11-03

一、写在前面:
作为前端开发,在项目中避免不了做表单到页面,做表单页面就避免不了要做表单效验,如果多个表单页面有相同都表单比如用户名,密码等等,不能每个页面都写一次验证规则。作者项目平时使用都vue比较多,所有使用vee-validate插件。一个轻量级的 vue表单验证插件。
下面总结下vee-validate的具体使用过程:

二、安装vee-validate

npm install vee-validate --save   
/*
	安装上面这个可能会报错。
	网上看了大佬的总结说直接安装下面带版本的不会不错,
	本人安装的带版本的,亲测不会没有报错
*/
npm install vee-validate@2.0.0-rc.25   

三、使用步骤:

(1)、创建一个js文件,这个存放表单的验证规则,我创建的文件名叫validate.js。
下面是我在项目中的存放位置:
在这里插入图片描述
(2)、在main.js中引入这个validate.js,将它他变成全局的.
在这里插入图片描述

(3)、validate.js详细代码

import Vue from 'vue'
import VeeValidate, { Validator } from 'vee-validate'
import zh from 'vee-validate/dist/locale/zh_CN' // 引入中文文件
Validator.addLocale(zh)
const config = {
    locale: 'zh_CN',
    fieldsBagName: 'fieldBags'
}
Vue.use(VeeValidate, config)

// 自定义validate
const dictionary = {
    zh_CN: {
        messages: {
            required: (field) => '请' + field,
            number: (field) => field + '必须为数值',
            url: () => '请输入正确格式的服务器地址',
            ip: () => '请输入正确的IP地址',
        },
        attributes: {
            ip: '输入IP地址',
            httpPort: '输入HTTP端口',
            userName: '输入用户昵称',
            mobile: '输入手机号码',
            emailAdd: '输入邮件地址',
            authCode: '输入您收到的验证码',
            loginPwd: '输入登录密码(6~18位',
            traderpwd: '输入交易密码(6~18位',
            recommender: '输入您的推荐人',
            isSee: '阅读用户协议,并同意',
            npwdLog: '输入新的登录密码',
            qrwdLog: '输入确认登录密码'
        }
    }
}
Validator.updateDictionary(dictionary)

// 1.IPV4地址
Validator.extend('ipAddr', {
    messages: {
        zh_CN: field => '请输入正确的IPV4地址'
    },
    validate: value => {
        return /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$/.test(value)
    }
})

// 2.端口【0~65535】
Validator.extend('port', {
    messages: {
        zh_CN: field => '请输入正确格式的端口号'
    },
    validate: value => {
        return /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/.test(value)
    }
})

// 3.用户昵称
Validator.extend('name', {
    messages: {
        zh_CN: field => '用户昵称不允许特殊符号'
    },
    validate: value => {
        return /^[\u4e00-\u9fa5A-Za-z0-9]*$/.test(value)
    }
})

// 4.用户昵称
Validator.extend('phone', {
    messages: {
        zh_CN: field => '手机号格式不正确'
    },
    validate: value => {
        return /^1[2-9]\d{9}$/.test(value)
    }
})

// 5.邮箱
Validator.extend('email', {
    messages: {
        zh_CN: field => '邮箱格式不正确'
    },
    validate: value => {
        return /^[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?$/.test(value)
    }
})

// 6.验证码
Validator.extend('code', {
    messages: {
        zh_CN: field => '验证码格式不正确'
    },
    validate: value => {
        return /^[0-9]*$/.test(value)
    }
})

// 6.登录密码
Validator.extend('logpwd', {
    messages: {
        zh_CN: field => '登录密码格式不正确'
    },
    validate: value => {
        return /^\S{6,18}$/.test(value)
    }
})

// 7.交易密码
Validator.extend('tradpwd', {
    messages: {
        zh_CN: field => '交易密码格式不正确'
    },
    validate: value => {
        return /^\S{6,18}$/.test(value)
    }
})

// 8.推荐人
Validator.extend('recom', {
    messages: {
        zh_CN: field => '推荐人格式不正确'
    },
    validate: value => {
        return /^[^\u4e00-\u9fa5]{0,}$/.test(value)
    }
})

// 9.用户协议
Validator.extend('see', {
    messages: {
        zh_CN: field => '请阅读用户协议,并同意'
    },
    validate: value => {
        return true
    }
})

// 10.忘记密码,新的登录密码
Validator.extend('npwd', {
    messages: {
        zh_CN: field => '登录密码格式不正确[6~18位]'
    },
    validate: value => {
        return /^\S{6,18}$/.test(value)
    }
})

// 11.忘记密码,确认新的登录密码
Validator.extend('qrwd', {
    messages: {
        zh_CN: field => '登录密码格式不正确[6~18位]'
    },
    validate: value => {
        return /^\S{6,18}$/.test(value)
    }
})

(4)、在组建中的使用

<div class="mui-input-row input-row">
 	<input v-validate="'required|name'" name="userName" type="text"  v-model="userName"  :placeholder="lang.name_pl"/>   
	<span v-show="errors.has('userName')" class="text-style"> {{ errors.first('userName') }} </span>  
</div>

对上面代码对解释
1、 input中需要有name属性,name=“userName”,在提示中会显示“用户昵称”,这个name对值要和你validate.js中attributes对象中对对应起来。


2、v-validate 属性:管道形式进行过滤,验证条件。官方已有的验证条件:required,email,ip等等,也可以使用自己定义的验证条件,这里是用户名的输入框,需要满足必填和用户名的格式。v-validate="‘required|name’" :required代表这个是必填项,|name要和validate.js中你写对验证规则导出对时候名字对应上。


3、input框下面对span就是验证时候提示对信息。这个是实时显示对,当你在输入不符合条件对时候会实时提示出来。
在这里插入图片描述

如果我们在项目中需要点击按钮在验证表单,不需要实时提示时,就不要写span标签那部分就可以了。

下面是点击按钮在验证表单的代码:

/*
	下面方法是获取所有的错误信息,提示第一个,没有错误信息则发送保存参数请求;
*/
methods:{
	// 点击保存
    handleSave() {
      this.$validator.validate().then(result => {
        if (!result) {
        	 Toast({message:this.errors.all()[0] duration: 1500});  // ui框架的提示弹窗
          	 return
        } else {
         	 this.handleSaveParam();   // 验证通过后请求接口的方法
        }
      })
    }
}

获取单个表单的验证信息:

/*
	下面方法是获取单个的错误信息;
*/
methods:{
	// 点击保存
    handleSave() {
      this.$validator.validate().then(result => {
        if (!result) {
	         if (this.errors.has('userName')) {
	           	Toast({message:this.errors.collect('userName')[0], duration: 1500});  // ui框架的提示弹窗
	           	return
	          } 
        } else {
          	this.handleSaveParam();   // 验证通过后请求接口的方法
        }
      })
    }
}

获取错误信息合集:
errors.first(‘field’) – 获取关于当前field的第一个错误信息
collect(‘field’) – 获取关于当前field的所有错误信息(list)
has(‘field’) – 当前filed是否有错误(true/false)
all() – 当前表单所有错误(list)
any() – 当前表单是否有任何错误(true/false)

相关链接:
vee-validate官网:https://baianat.github.io/vee-validate/guide/#features
参考:https://blog.csdn.net/qq_39186346/article/details/89216992
常用的表单验证正则表达式总结:https://blog.csdn.net/baiqiangdoudou/article/details/100185327

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue项目中使用vee-validate表单验证 的相关文章

  • android.accounts包

    包 android accounts 英文原文 http developer android com reference android accounts package summary html 版本 Android 4 0 r1 译者署
  • 概率论与数理统计

    概率论与数理统计 一 概率论基本概述 1 1 随机试验 1 2 样本空间与随机事件 1 3 频率与概率 1 4 古典概型 1 5 条件概率 1 6 独立性 二 随机变量及其分布 2 1 随机变量 2 2 离散型随机变量及其分布 2 3 随机

随机推荐

  • mbed OS会成为物联网的 Android 吗?

    转载至 http www mbed org cn archives mbed os E4 BC 9A E6 88 90 E4 B8 BA E7 89 A9 E8 81 94 E7 BD 91 E7 9A 84 android E5 90 9
  • 使用远程服务器总是因网络中断、终端不小心关闭、锁屏等导致程序中断

    分享编程工具实用方法 面对无穷无尽的配置bug 其他文章 Windows连接远程Linux服务器 VSCode配置 免密设置 跳板机配置 GeForce RTX 3090无法使用mmsegmentation官方推荐cuda版本 ubuntu
  • 计算机辅助实验圆弧连接画法,机械制图基础-18、圆弧连接的画法

    绘图时 经常要用已知半径的圆弧 但圆心要在作图中确定 这样的圆弧 称为连接圆弧 连接圆弧需要光滑连接已知直线或圆弧 光滑连接也就是要在连接点处相切 为了保证相切 必须准确地作出连接圆弧的圆心和切点 一 用已知半径为R的圆弧连接两条已知直线
  • 超七成阅读APP都借百度语音技术促用户增长

    全国十多亿人在这个春节集体 关门闭户 与手机和网络作伴 除了手游和短视频流量飞涨 在线阅读也迎来 高光时刻 特别是当手机阅读APP标配了语音朗读即 听书 功能 据百度大脑AI开放平台的后台数据显示 疫情期间 支持 听书 功能的语音合成技术的
  • 重新映射图像——OpenCV Remap实例

    重新映射图像 OpenCV Remap实例 在计算机视觉领域中 图像的几何变换是一项重要的工作 重要的任务之一是将图像转换为其他形式 例如投影或扭曲 OpenCV的Remap函数提供了一个简单和灵活的方法来执行这种类型的变换 下面展示了如何
  • unsigned char 数值溢出问题

    include
  • 在D盘使用SVN检出文件后,整个盘出现蓝色问号的解决办法。

    在D盘使用SVN检出文件后 整个盘出现蓝色问号的解决办法 原因 在该盘的根目录执行了checkout操作 SVN将整个盘作为了一个版本库的本地副本 那些问号表示这些文件没有被SVN控制 解决方法 1 在文件上右击 选择TortoiseSVN
  • android studio电影院选座,8排电影院选座最佳位置

    8排电影院选座最佳位置在哪里呢 8排电影院属于小影厅 小影厅银幕宽度在10米以下 座位100以内 座位排数通常拥有8 14排 小影厅整体空间小 选座时要选中间稍靠后一些的位置 由于整体排数少 因此选即便选择靠后一些的排数实际上距银幕的距离也
  • ubuntu 同时使用无线网卡和有线网卡

    转载于这位博主 文章
  • Ubuntu18.04 取消开机密码 实现自动登录

    因为要把Ubuntu设备作为服务器 实现开机自动运行服务程序 所以需要取消开机密码 实现自动登录 1 点击桌面右上角向下的箭头 点击设置图标 2 点击右上角的 Unlock 3 在弹出的窗口中输入系统登录密码 点击右下角 Authentic
  • OpenMP并行编程

    1 总览 OpenMP Open Multi Processing 是一种用于共享内存并行系统的多线程程序设计方案 支持的编程语言包括C C 和Fortran OpenMP提供了对并行算法的高层抽象描述 通过线程实现并行化 特别适合在多核C
  • springboot使用logback日志框架超详细教程

    前言 项目中日志系统是必不可少的 目前比较流行的日志框架有log4j logback等 可能大家还不知道 这两个框架的作者是同一个人 Logback旨在作为流行的log4j项目的后续版本 从而恢复log4j离开的位置 另外 slf4j Si
  • 阶乘约数

    include
  • 【4月第二周学习记录】数据结构与算法王卓-第六章图-图的遍历(邻接矩阵与邻接表,DFS与BFS)

    1 图的遍历基本思路与方法 图的遍历的定义与visited数组 常用的遍历方法 深度优先搜索遍历 Depth First Search DFS 广度优先搜索遍历 Breadth First Search BFS 2 深度优先搜索遍历 Dep
  • 华为SMC2.0视频会议系统总结(一)

    简单总结下 新上手的华为视频会议SMC2 0会控系统 第一次接触华为的会控系统 理解的不是很深刻 简单的记下来 省得以后忘记 因为客户使用的泛微OA系统 我们公司 南大智慧 负责提供华为设备 并做相应的接口开发工作 我们主要的工作内容就是确
  • 控制器的编码器

    一 原理 控制器内部为每个轴配置了脉冲计数装置 控制器默认的脉冲计数源是外部编码器 如果用户 在接线时将外部编码器的信号与端子板 25pin轴接口的编码器信号接在一起 就可以调用指令读取外部编码器的值 如果用户没有接外部编码器反馈信号 例如
  • java基础学习 day22(方法,return,重载)

    1 方法 是程序中最小的执行单元 方法里面的代码 要么全都执行 要么全都不执行 重复的代码 具有独立功能的代码可以抽取到方法中 方法的好处 可以提高代码的复用性 可以提高代码的可维护性 java虚拟机在运行时会先自动调用main 方法 2
  • ## 带AB相编码器直流减速电机测转动速度及角度深度解析

    带AB相编码器直流减速电机测转动速度及角度深度解析 下图为编码器输出的AB相波形 一般情况下 我们只测A相 或B相 的上升沿或下降沿 但四倍频的方法是测A相和B相的上升沿和下降沿 在同样的时间内 计数脉冲是以前的4倍 然后stm32单片机可
  • 一致性的3种协议,并发,事务

    Two Phase Commit MVCC Paxos TPC对应于传统数据库上的local cluster的一致性 分布式事务 每个节点上的local事务可以是不同的亦可以是相同的 replica MVCC的思想是抓住Transactio
  • vue项目中使用vee-validate表单验证

    一 写在前面 作为前端开发 在项目中避免不了做表单到页面 做表单页面就避免不了要做表单效验 如果多个表单页面有相同都表单比如用户名 密码等等 不能每个页面都写一次验证规则 作者项目平时使用都vue比较多 所有使用vee validate插件