还在为ElementUI的原生校验方式苦恼吗,快用享受element-ui-verify插件的快乐吧(待续)

news2024/10/7 18:25:08

element-ui-verify

本文章意在介绍element-ui-verify插件使用,以及对比elementUI原生校验方式,突显该插件用少量代码也能实现原生的校验效果甚至更好。

1.先观察一个示例
在这里插入图片描述
在这里插入图片描述

<template>
    <d2-container>
        <el-form :model="ruleForm" :rules="rules" label-width="100px">
            <el-form-item label="活动名称" prop="name">
                <el-input v-model="ruleForm.name" style="width: 200px"></el-input>
            </el-form-item>
        </el-form>
    </d2-container>
</template>

<script>
export default {
  data () {
    return {
      ruleForm: {
        name: ''
      },
      rules: {
        name: [
          { required: true, message: '请输入活动名称', trigger: 'blur' },
          { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
        ]
      }
    }
  }
}
</script>

上面是官方文档的一个校验示例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<template>
    <d2-container>
        <el-form :model="ruleForm2" label-width="100px">
            <el-form-item label="活动名称" prop="name" verify :minLength="3" :maxLength="5">
                <el-input v-model="ruleForm2.name" style="width: 200px"></el-input>
            </el-form-item>
        </el-form>
    </d2-container>
</template>

<script>
export default {
  data () {
    return {
      ruleForm2: {
        name: ''
      }
    }
  }
}
</script>

上面是使用element-ui-verify插件的一个示例,把原来写在data里的校验变量改为el-form-item的属性来校验,使得代码更加得简洁了。

2.element-ui-verify插件介绍
本插件只是对 ElementUI 原本的校验方式做了一层封装,核心的校验器仍然是 async-validator,非侵入式,完全不会影响你继续使用 ElementUI 的原生校验。

3.element-ui-verify插件安装和使用
安装

npm install element-ui-verify

引入

import Vue from 'vue'
import elementUI from 'element-ui'
import elementUIVerify from 'element-ui-verify'
 
// 这里注意必须得先use elementUI
Vue.use(elementUI)
Vue.use(elementUIVerify)

默认支持的校验规则属性

length: 校验文本长度
minLength: 校验文本最短长度
gt: 校验数字要大于某数
gte: 校验数字要大于等于某数
lt: 校验数字要小于某数
lte: 校验数字要小于等于某数
maxDecimalLength: 校验数字最大小数位
number: 校验是否为数字
int: 校验是否为整数
phone: 校验是否为手机号(随着号段的增加,未来可能需要更新)
email: 校验是否为电子邮件地址
verifyCode: 校验是否为 6 位数字验证码

插件的默认校验不通过提示模板

const errorMessageTemplate = {
  empty: '请补充该项内容',
  length: '请输入{length}位字符',
  minLength: '输入内容至少{minLength}位',
  number: '请输入数字',
  int: '请输入整数',
  lt: '输入数字应小于{lt}',
  lte: '输入数字不能大于{lte}',
  gt: '输入数字应大于{gt}',
  gte: '输入数字不能小于{gte}',
  maxDecimalLength: '该输入项最多接受{maxDecimalLength}位小数',
  phone: '请输入正确的手机号',
  email: '请输入正确的邮箱',
  verifyCode: '请输入正确的验证码'
}

// 可以对上面默认的错误提示模板修改
// 如第一项修改(用于复用错误提示) empty: '{alias}不能为空'
// 然后使用修改后的模板
Vue.use(elementUIVerify, {
	errorMessageTemplate,
	fieldChange: 'verify'
})
// 其中 verify-当绑定字段变化时会实时触发校验,clear-当绑定字段变化时只清空校验结果,不触发校验

4.重要属性说明

verify

若要使用element-ui-verify插件,verify选项是必须的,如果没有配置该选项,那么仍可以正常使用ElementUI原生的校验。该选项还可以接收一个函数值,用于 自定义校验方法。

canBeEmpty

开启该项,一旦输入项为空则会忽略该输入项之后所有的校验。

space

开启该项,插件执行空检测时,输入空格可通过

emptyMessage

空检测错误提示

errorMessage

用于自定义校验不通过提示(空检测和自定义校验方法的错误提示不受该值影响)

alias

用于复用错误提示,需修改错误提示模板,如{ empty: ‘{ alias }不能为空’ }

watch

监听其他变量,触发自身校验

第一个例子,密码一致性校验

<template>
    <d2-container>
        <!-- 使用watch属性 密码一致性校验 -->
        <el-form :model="model">
            <el-form-item label="密码" prop="pass1" verify>
                <el-input v-model="model.pass1" style="width: 200px"></el-input>
            </el-form-item>
            <el-form-item label="确认密码" prop="pass2" :verify="verifyPassword" :watch="model.pass1">
                <el-input v-model="model.pass2" style="width: 200px"></el-input>
            </el-form-item>
        </el-form>
    </d2-container>
</template>

<script>
export default {
  data () {
    return {
      model: {
        pass1: '',
        pass2: ''
      }
    }
  },
  methods: {
    verifyPassword (rule, val, callback) {
      if (val !== this.model.pass1) callback(Error('两次输入密码不一致!'))
      else callback()
    }
  }
}
</script>

第二个例子,最少人数变化要触发最多人数的校验

<template>
    <d2-container>
        <!-- 最少人数变化要触发最多人数的校验 -->
        <el-form :model="model">
            <el-form-item label="最少参与人数" prop="minNumber" verify int :gt="0">
                <el-input v-model="model.minNumber" style="width: 200px"></el-input>
            </el-form-item>
            <el-form-item label="最多参与人数" prop="maxNumber" verify int :gt="model.minNumber">
                <el-input v-model="model.maxNumber" style="width: 200px"></el-input>
            </el-form-item>
        </el-form>
    </d2-container>
</template>

export default {
  data () {
    return {
      model: {
        minNumber: '',
        maxNumber: ''
      },
  }
}

自定义校验方法

verify

<template>
    <d2-container>
        <!-- 自定义校验方法 -->
        <el-form :model="model">
            <el-form-item label="卡号" prop="cardNumber" :verify="verifyCardNumber" :length="6">
                <el-input v-model="model.cardNumber" style="width: 200px"></el-input>
            </el-form-item>
        </el-form>
    </d2-container>
</template>

<script>
export default {
  data () {
    return {
      model: {
        cardNumber: ''
      }
    }
  },
  methods: {
    // callback形式 校验是否是010,011开头的卡号
    verifyCardNumber (rule, val, callback) {
      if (!['010', '011'].includes(val.substr(0, 3))) callback(Error('错误的卡号'))
      else callback()
    }
  }
}
</script>

自定义校验规则

addRule (适用于全局)

待续。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/179261.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树超级经典OJ题

目录1.根据二叉树创建字符串2.二叉树的层序遍历3.二叉树的层序遍历II4.二叉树的最近公共祖先5.二叉搜索树与双向链表6.从前序与中序遍历序列构造二叉树1.根据二叉树创建字符串 根据二叉树创建字符串 给你二叉树的根节点root&#xff0c;请你采用前序遍历的方式&#xff0c;将二…

编码器M法测速仿真(Simulink)

编码器M法和T法测速的详细讲解可以参看下面的文章链接,这里不再赘述,这里主要介绍Simulink里建模仿真,带大家从另一个角度理解编码器测速原理。 PLC通过编码器反馈值计算速度的推荐做法(算法解析+ST代码)_RXXW_Dor的博客-CSDN博客_编码器计算速度程序实例PLC如何测量采集编…

Power BI中类似Vlookup的查询筛选功能如何实现

一、问题描述 在Excel中有一个非常经典的函数Vlookup&#xff0c;可以通过首列查找&#xff0c;返回相对应的其他列的值。这种功能&#xff0c;在Power BI中没有Vlookup函数&#xff0c;那么该如何实现这一功能呢&#xff1f;下面通过一个实例做分析演示。 二、数据源 已知某…

厚积薄发打卡Day114:Debug设计模式:设计原则(二)<接口隔离原则、迪米特法则>

厚积薄发打卡Day114&#xff1a;Debug设计模式&#xff1a;设计原则&#xff08;二&#xff09;<接口隔离原则、迪米特法则> 接口隔离原则 定义 用多个专门的接口&#xff0c;而不使用单一的总接口&#xff0c;客户端不应该依赖它不需要的接口 一个类对一个类的依赖应…

如何将 Spring Boot 项目提交到 Gitee 进行远程管理?

如何将初始化完成的 Spring Boot 项目&#xff0c;提交的 Gitee 仓库&#xff0c;进行远程管理&#xff1f; 目录 如何将初始化完成的Spring Boot项目&#xff0c;提交的Gitee仓库&#xff0c;进行远程管理&#xff1f; 0. 环境说明 1.创建并初始化Spring Boot项目 2.创建…

如何设计一个 70w 在线人数的弹幕系统 ?

背景 现在的抖音、快手等一系列能支持直播的软件如何做到的同一时间万人发弹幕的功能的&#xff1f; 问题分析 带宽压力&#xff1b; 弱网导致的弹幕卡顿、丢失&#xff1b; 性能与可靠性。 带宽优化 启用Http压缩 HTTP压缩是指在Web服务器和浏览器间传输压缩文本内容的方…

网络— — 二层交换机

网络— — 二层交换机 1 交换机端口 g0/3 g&#xff1a;1000M/s0&#xff1a;模块号3&#xff1a;接口号 每个端口网速&#xff1a; Ethernet 10M/s FastEthernet 100M/s GigabitEthernet 1000M/s TenGigabitEthernet 10000Mb/s 2 数据链路层&#xff08;2层&#xff09; Data…

python图像处理(opencv入门)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们讨论了fpga的基本操作,这些都是作为整个图像处理的基础部分进行学习的,本质上还是希望用fpga来对部分算法进行加速处理。当然,fpga实现的只是一部分算法,并不是所有的算…

【手写 Promise 源码】第二篇 - Promise 功能介绍与特性分析

一&#xff0c;前言 上一篇&#xff0c;对 Promise 进行了简单介绍&#xff0c;主要涉及以下几个点&#xff1a; Promise 简介和基本使用&#xff1b;Promise 和 callback 对比&#xff1b;Promise 的重要性和作用&#xff1b;Promise 使用场景&#xff1a;Promisify 封装&am…

Python Flask 框架设置响应头,一篇文章学明白

flask 响应头设置&#x1f4d6; 导读&#x1f4d6; Python Flask 设置响应头&#x1f389; response.headers 属性&#x1f389; flask.abort() 函数返回特定状态码&#x1f4d6; Flask 中可设置的响应头参数&#x1f4d6; 其他关于响应头的配置&#x1f381; 使用中间件&#…

[Python]调用pytdx的代码示例

安装pytdxpip install pytdx简单示范from pytdx.hq import TdxHq_API api TdxHq_API() # 数据获取接口一般返回list结构&#xff0c; with api.connect(119.147.212.81, 7709): # 返回普通listdata api.get_security_bars(9, 0, 000001, 0, 10) print(data)输出结果[Ordered…

康巴丝(compas)某Wi-Fi万年历无法自动校时的问题

笔者前两年购买过一块康巴丝牌的电子万年历&#xff0c;该万年历的最大特点可以通过Wi-Fi联网自动校时。 后来的某一天&#xff0c;笔者将原来的H3C AP&#xff08;11AC&#xff09;升级为锐捷AP&#xff08;11AX&#xff09;。 在之后的几个月中&#xff0c;发现这块电子万年…

Linux常用命令——setsebool命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) setsebool 修改SElinux策略内各项规则的布尔值 补充说明 setsebool命令是用来修改SElinux策略内各项规则的布尔值。setsebool命令和getsebool命令是SELinux修改和查询布尔值的一套工具组。SELinux的策略与规则…

【云原生】Prometheus 监控系统的初步了解与系统搭建

内容预知 前言 1. Prometheus的相关知识 1.1 Prometheus的认识与了解 1.2 Prometheus的特点 1.3 Prometheus存储引擎TSDB 的特点优势 1.4 Prometheus 的生态组件 &#xff08;1&#xff09;Prometheus server &#xff08;2&#xff09;Client Library &#xff08;3&a…

主流的操作系统(带你快速了解)

&#x1f4dc; “作者 久绊A” 专注记录自己所整理的Java、web、sql等&#xff0c;IT技术干货、学习经验、面试资料、刷题记录&#xff0c;以及遇到的问题和解决方案&#xff0c;记录自己成长的点滴。 &#x1f341; 操作系统【带你快速了解】对于电脑来说&#xff0c;如果说…

如何安装双系统与多系统(带你快速了解)

&#x1f4dc; “作者 久绊A” 专注记录自己所整理的Java、web、sql等&#xff0c;IT技术干货、学习经验、面试资料、刷题记录&#xff0c;以及遇到的问题和解决方案&#xff0c;记录自己成长的点滴。 &#x1f341; 操作系统【带你快速了解】对于电脑来说&#xff0c;如果说…

开放式基金净值历史数据 API 数据接口

开放式基金净值历史数据 API 数据接口 实时净值&#xff0c;历史数据&#xff0c;多维度指数参数。 1. 产品功能 支持所有开放式基金净值历史数据查询&#xff1b;可定义查询指标与时间范围&#xff1b;支持所有开放式基金净值历史数据查询&#xff1b;不同的输入指标返回不同…

java-List

java-List1. 预备知识-泛型(Generic)1.1 泛型的引入1.2 泛型的分类1.3 泛型类的定义的简单演示1.4 泛型背后作用时期和背后的简单原理1.5 泛型类的使用1.6 泛型总结2. 预备知识-包装类(Wrapper Class)2.1 基本数据类型和包装类直接的对应关系2.2 包装类的使用&#xff0c;装箱(…

Windows压缩工具 “ Bandizip与7-zip ”(带你快速了解)

&#x1f4dc; “作者 久绊A” 专注记录自己所整理的Java、web、sql等&#xff0c;IT技术干货、学习经验、面试资料、刷题记录&#xff0c;以及遇到的问题和解决方案&#xff0c;记录自己成长的点滴。 &#x1f341; 操作系统【带你快速了解】对于电脑来说&#xff0c;如果说…

机器视觉在烟草领域中的应用

一个不知名大学生&#xff0c;江湖人称菜狗 original author: jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2023.1.26 Last edited: 2023.1.26 目录 机器视觉在烟草领域中的应用 烟叶外观检测 烟末原料异物检测 叶梗烟丝缺陷检测 香烟过滤嘴外型检测…