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

2023-11-06

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 (适用于全局)

待续。。。

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

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

随机推荐

  • STL之mismatch

    判断两个区间的第一个不匹配点 返回一个由两个迭代器组成的pair 其中第一个迭代器指向第一个区间的不匹配点 第二个迭代器指向第二个区间的不匹配点 如果都匹配 返回的是指向两个区间的last迭代器 quality 1 采用默认operator
  • VUE element-ui 之button按钮之间切换时单个按钮持续聚焦状态实现(点击按钮聚焦,仅当点击其他按钮时,之前的按钮会失焦,当前按钮聚焦)

    多个按钮切换时 页面切换 假设不做处理会出现点击按钮时聚焦 离开按钮点击任何地方 鼠标单击 按钮会失焦 我这里要求实现点击按钮聚焦 仅当点击其他按钮时 之前的按钮会失焦 当前按钮聚焦 也就是提醒用户当前处于哪个维度的页面 这里自己研究的方法
  • apt install报错E: Unmet dependencies. Try ‘apt --fix-broken install‘ with no packages的解决方案

    摘要 最近在一台Ubuntu 22 04系统中部署语音识别项目 不知道怎么 我使用apt install安装软件时报错 无论安装什么软件都是报同一个错误E Unmet dependencies Try apt fix broken inst
  • 柯美背包服务器系统,全能升级!全面合作!经纬科技与柯美中国正式签约

    经纬长期关注客户需求 现针对图文行业客户核心需求 加推卷材送料功能 该功能已在海外市场成熟应用1年多时间 可助力客户承接更多业务 但又不会因订单数量起伏导致设备闲置 真正实现一机多能 提升效率 创造价值 横向打通 睿思新科技 锐启新合作 真
  • .env.development(开发环境)、.env.prodction(正式环境)、自定义环境的使用

    1 配置文件 env development 开发环境下的配置文件 env production 生产环境下的配置文件 2 命名 属性必须以VUE APP 开头 案列 env development NODE ENV development
  • 《趣谈Linux》总结十:虚拟化

    37 虚拟化 Linux越来越强大了 例如 内存动不动就是百G内存 网络设备一个端口的带宽就能有几十G甚至上百G 存储在数据中心至少是PB级别的 一个P是1024个T 一个T是1024个G 这自然有了一些不灵活的地方 资源大小不灵活 有时候
  • python初阶---基础语法篇(二)

    文章目录 一 数据类型 二 列表 三 元组 四 集合 五 字典 六 序列 七 遍历函数map 八 筛选函数filter 九 累计函数reduce 一 数据类型 1 逻辑型 逻辑型又称布尔型 取值只有两种 0和1 或者真和假 False和Tr
  • 7.2

    include
  • Android自定义RecyclerView实现多级树

    Android自定义RecyclerView实现多级树 在Android开发中 RecyclerView是一个强大灵活的控件 常用于展示大量数据列表 而有时候我们需要实现多级树结构的列表 即每个节点下面可以包含子节点 这时候就需要对Recy
  • shell脚本启动jar包

    bin bash NAME spring admin echo NAME PID ps ef grep NAME grep java grep v grep awk print 2 echo 当前进程号为 PID echo for pid
  • iphone屏蔽系统更新_iphone如何实现永久屏蔽IOS系统更新?

    一直以来苹果的新系统更新覆盖率是全行业最快也是最高的 截止到ios13发布为止 ios12的全网覆盖率已经达到了惊人的90 iphone手机如何永久屏蔽IOS系统更新 对于ios13加入的诸多功能升级以及隐藏的一些不稳定因素 更多用户会选择
  • 线性代数 - 矩阵形式下的最小二乘法

    20201001 0 引言 最近在看 异常点检测 的时候 其中在PCA部分 准确来说是前面一小节 在进行推导的时候 使用了最小二乘法 其实这个东西本质上并不难 但是让我比较尴尬的是 很多线性代数的东西有些遗忘了 好在最近直截了当的复习让大部
  • Python3中with用法

    Python中的with语句用于用上下文管理器 context manager 定义的方法包装块的执行 它允许将常见的try except finally使用模式封装起来以方便重用 在Python中 在处理非托管资源 unmanaged r
  • Idea代码上传至Git完整教程(阿里云)

    项目背景 本期项目是一个数据化应用系统 使用的是idea开发后台 前端使用微信小程序的项目 项目中 为了代码管理方便 使用了阿里云作为代码托管 直接使用idea上传下载代码 本期文章介绍idea上传代码的过程 与大家分享 如有不行详细或错误
  • Python code模块

    code 解释器基类 code 模块提供了在 Python 中实现 read eval print 循环的功能 它包含两个类和一些快捷功能 可用于构建提供交互式解释器的应用程序 class code InteractiveInterpret
  • Kmeans原理公式图文详解

    在网上查看了些博客 感觉大家都对数学公式的解释的比较晦涩 下面我结合一个非常简单的示意图解释下他的数学公式 理解不到位的请留言 kmeans是一种聚类算法下面是算法的描述 给定训练样本是每一个 即每一个样本元素都是n维向量 为了便于理解在后
  • 淘宝淘金币助手,自动完成淘金币任务,蚂蚁庄园和蚂蚁森林,天猫领红包和收取能量

    最新软件下载 详见群文件 长期更新 QQ群号 636677598 或者直接点击链接加群 https jq qq com wv 1027 k 8rmAofkO 微信 baohuikf 1 下载安装金币助手 2 打开无障碍服务和悬浮窗权限 授权
  • Android进阶(五)DataBinding解析

    1 概述 在上篇文章Android进阶 四 LiveData解析中讲到了关于JetPack框架的LiveData解析 这是一个基于ViewModel和观察者模式的实践 这篇文章要讲的DataBinding同样可以认为是基于ViewModel
  • MIB、SIB

    1 1 概述 系统信息分成MasterInformationBlock MIB 和多个SystemInformationBlocks SIBs MIB包括有限个最重要 最常用的传输参数 其需要从该小区中获得其它的信息 同时其在 BCH上进行
  • 还在为ElementUI的原生校验方式苦恼吗,快用享受element-ui-verify插件的快乐吧(待续)

    element ui verify 本文章意在介绍element ui verify插件使用 以及对比elementUI原生校验方式 突显该插件用少量代码也能实现原生的校验效果甚至更好 1 先观察一个示例