尚品汇细节分析-Vue项目中如何实现自定义校验规则

2023-10-26

需求:当用户登录时,会输入用户名和密码,用户名不能为空,密码的长度不能小于6位。需要在用户在点击登录按钮前,进行验证是否通过我们设定的规则,如果通过则放行,如果不通过则会进行提示。

效果图:
在这里插入图片描述

结合Element-UI来实现校验规则

1. 页面元素中的设定

(1)在el-form中绑定rules,同时v-mode绑定存储表单数据的变量,ref用于对表单元素进行标记,后面点击登录时,会获取表单,判断表单中的字段是否都通过验证规则。

<el-form :model="loginForm" :rules="loginRules"  ref="loginForm">

(2)在el-form-item中设定prop属性,这里的属性值需与rules中的属性值保持一致。

<el-form-item prop="username"></el-form-item>

在这里插入图片描述

2. data中定义rules校验规则

data(){
    return {
      loginForm: {
        username: "admin",
        password: "111111",
      },
      loginRules: {
        username: [
          { required: true, trigger: "blur", validator: validateUsername },
        ],
        password: [
          { required: true, trigger: "blur", validator: validatePassword },
        ],
      },
}
required表示必须输入字段
trigger表示用户行为,常用blur表示失去焦点

3. 自定义校验规则

这里自定义规则的方法的调用是写在了rule里面,即validator当中
必须要写callback()

// 验证用户名以及密码
const validateUsername = (rule, value, callback) => {
      callback();
  if (!value) {
     callback(new Error("请输入用户名"));
   } else {
     callback();
   }
};
const validatePassword = (rule, value, callback) => {
   if (value.length < 6) {
      callback(new Error("密码长度不能小于6位"));
   } else {
      callback();
   }
};

4、点击登录,此时判断需要验证的字段是否都通过了校验规则

  • 点击登录会触发handleLogin,这个方法写在了form表单身上,采用$refs方式获取表单元素,触发他身上的验证规则
  • 如果valid是真,则触发仓库中的action中的login方法,通过传入后台验证,用户名密码是否正确,日过正确则进行跳转
  • 如果没有通过验证,则会返回false
    在这里插入图片描述

采用表单验证插件vee-validate来写

1. 安装:

npm install vee-validate --save

2. 引用

创建一个validate的js文件,在里面使用插件,编写验证规则
在这里插入图片描述
在main.js中引入这个js文件
在这里插入图片描述

3. 编写验证规则并在页面中应用

这里涉及到了四个验证规则

  • 手机号开头必须是1,且后面必须跟10位数字
  • 验证码必须是6位数字
  • 密码必须是2到5位大小写字母或是数字
  • 确认密码必须和登录密码保持一致
    在这里插入图片描述
  • 验证规则是直接在页面中的regex中写出来的,用到了正则表达式。
  • 页面中需要在每个组件身上写name属性,这样使得js与页面组件进行关联。
  • attributes中的作用是对属性赋予中文名称,这样在页面上显示的时候,才会显示中文。
    在这里插入图片描述
    每个组件后面必须要写span标签,用于显示作物提示
 <span class="error-msg">{{ errors.first("password2") }}</span>

4. 点击注册,进行表单验证

在这里插入图片描述

这两种方式进行对比,个人感觉没有第一种方式灵活,且第二种上手要难点。不过第二种的代码量要比第一种少。

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

尚品汇细节分析-Vue项目中如何实现自定义校验规则 的相关文章

随机推荐

  • 面试鹅厂,我三面被虐的体无完肤……

    戳蓝字 CSDN云计算 关注我们哦 作者 codegoose 来源 https segmentfault com a 1190000017864721 经过半年的沉淀 加上对MySQL redis和分布式这块的补齐 终于重拾面试信心 再次出
  • SOLO代码阅读解析

    SOLO是一种直接预测instance mask的范式 摒弃了之前top down和bottom up两种主流的实例分割方法 从而pipeline更加简洁直观 这篇文章以官方代码中的demo为例 简单梳理一下SOLO在inference时的
  • etcd编译与简单使用

    etcd是用go语言编写的 首先安装与配置go语言的环境 ubuntu1404安装go开发环境参考 http xhrwang me 2014 12 22 go dev env html http go ctolib com topics 3
  • 队列的C语言实现

    头文件 Queue h typedef int BTDataType typedef struct BindaryTreeNode BTDataType data struct BindaryTreeNode left struct Bin
  • Elasticsearch解决只能查询10000条数据方案

    es官方默认限制索引查询最多只能查询10000条数据 查询第10001条数据开始就会报错 Result window is too large from size must be less than or equal to 但是很多时候10
  • tan和atan--正切和反正切函数

    功能简介 求变量的正切和反正切 语法格式 1 Y tan X 求X中元素的正切值 元素可以为复数 tan函数是周期函数 以pi为一个周期 当元素值等于pi 2的奇数倍时 函数失去定义 在三角函数中 tan x sin x cos x 2 Y
  • P1025 数的划分(dfs/dp)

    题目 https www luogu com cn problem P1025 题目描述 将整数n分成k份 且每份不能为空 任意两个方案不相同 不考虑顺序 例如 n 7 k 3 下面三种分法被认为是相同的 1 1 5 1 5 1 5 1 1
  • 关于vscode头文件出现红色波浪曲线问题

    关于vscode头文件总显示红色波浪曲线解决 方法1 可以在设置中直接关掉 方法2 没有添加编译器的路径 我们可以找到gcc exe所在的路径 或者重新安装官网下载 解压到c盘非中文路径 复制路径 主要是看gcc g 所在的路径
  • 环信iOS使用步骤及使用总结

    环信iOS使用步骤及使用总结 第一步 集成 请参照环信官方文档http docs easemob com im 300iosclientintegration 20iossdkimport 集成 iOSSDK 在您阅读此文档时 我们假定您已
  • OpenAI最新官方ChatGPT聊天插件接口《插件部署上生产》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(五)(附源码)

    Plugins in production 插件部署上生产 前言 Rate limits 速率限制 Updating your plugin 更新您的插件 Plugin terms Domain verification and secur
  • TCP与UDP的区别

    一 前言 TCP IP 中有两个具有代表性的传输层协议 分别是 TCP 和 UDP 二 TCP IP网络模型 计算机与网络设备要相互通信 双方就必须基于相同的方法 比如 如何探测到通信目标 由哪一边先发起通信 使用哪种语言进行通信 怎样结束
  • 因果推断4--Causal ML(个人笔记)

    目录 1 安装教程及官方文档 1 1 pip安装 1 2 API文档 1 3 代码仓库 2 Uplift模型与主要方法介绍 2 1 发放代金券 2 2 多treatment 2 3 实验方法 3 causalml inference tre
  • IDEA中使用单元测试(Junit)Scanner控制台无法输入问题解决 2022.12.13

    步骤 Help Edit Custom VM options 在idea64 exe vmoptions文件中最后一行添加如下内容 Deditable java test console true 操作完成保存后一定要重启IDEA ps 通
  • Vue中读取本地图片实现预览和上传

    先看效果图 上面展示了两张从本地添加的准备上传服务器的预览图片 效果还不错吧 哈哈哈 下面是该页面中紫色框的布局与实现代码 我想有些人也不喜欢HTML中默认的上传文件样式 实在辣眼睛
  • C\C++ 中的绝对值函数:abs()、cabs()、fabs()、labs()

    不同类型的数据使用不同类型的绝对值函数 整型 int abs int i 返回整型参数i的绝对值 复数 double cabs struct complex znum 返回复数znum的绝对值 双精度浮点型 double fabs doub
  • egg-swagger token验证无效解决方案

    先看效果 注意 我这边只讲重点 1 首先 egg swagger 怎么安装看我的这篇egg swagger demo 无数据库版 2 无swagger的 token 验证 我的这篇eggjs token生成和验证demo 3 我这边只讲 重
  • Raft一致性算法

    摘要 Raft 是一种为了管理复制日志的一致性算法 它提供了和 Paxos 算法相同的功能和性能 但是它的算法结构和 Paxos 不同 使得 Raft 算法更加容易理解并且更容易构建实际的系统 为了提升可理解性 Raft 将一致性算法分解成
  • Prometheus详解(四)——Prometheus简单使用

    今天继续给大家介绍Linux运维相关知识 本文主要内容是Prometheus简单使用 在上文Prometheus详解 三 Prometheus安装部署中 我们介绍了Prometheus的安装和部署 今天 我们就来介绍一下Prometheus
  • fork()父子进程变量之间的关系与信号的响应

    1 变量关系 根据 unix 高级环境编程 中的一句话 子进程和父进程继续执行fork调用之后的指令 子进程是父进程的副本 例如 子进程获取父进程数据空间 堆和栈的副本 注意 这是子进程所拥有的副本 父子进程并不共享这些存储空间部分 父子进
  • 尚品汇细节分析-Vue项目中如何实现自定义校验规则

    需求 当用户登录时 会输入用户名和密码 用户名不能为空 密码的长度不能小于6位 需要在用户在点击登录按钮前 进行验证是否通过我们设定的规则 如果通过则放行 如果不通过则会进行提示 效果图 结合Element UI来实现校验规则 1 页面元素