关于ElementPlus中的表单验证

news2024/12/28 2:18:44

关于ElementPlus中表单的校验规则,官网文档已经给出了,但是没有说明性文字,所以我想来记录一下,给出一些文字说明

ElementPlus中的简单校验

ElementPlus的表单的一般结构是:

<el-form>
	<el-form-item>
		<el-input/>
	</el-form-item>
</el-form>

ElementPlus中使用表单校验规则:

  • <script>中给出校验规则对象,主要属性名要与form对象的属性名一致
  • 一个字段的校验规则可以有多个,值是一个数组,数组中的一个对象就是一条校验规则
// 收集表单数据
const form = reactive({
  account: '',
  password: '',
  agree: false
})

// 定义校验规则
// 可以为一个字段指定多条校验规则
// 规则名称与form表单字段一致
const rules = reactive({
  account: [
    // required是否必填,message不符合此规则时的提示信息,
    // trigger触发此条规则校验的时机,有两个值, blur 或 change,默认就是blur和change都会进行校验
    // min此字段的最小长度,max此字段的最大长度
    // pattern 正则表达式
    { required: true, message: '账户不能为空', trigger: 'blur' },
    { min: 6, max: 14, message: '用户名长度为6 - 14位' }
  ]
})

在模版中:

  • <el-form>rules属性绑定规则校验对象
  • <el-form-item>prop属性绑定规则对象的某个字段
<!--
  :model 绑定表单对象
  :rules 绑定表单的校验规则
-->
<el-form
  status-icon
  :model="form"
  :rules="rules"
>
  <!--
	label标签名
	prop属性,指定校验规则中的
  -->
  <el-form-item label="账户" prop="account">
	<!-- v-model将值收集到哪个变量中 -->
	<el-input v-model="form.account" />
  </el-form-item>

  <el-form-item label="密码">
	<el-input v-model="form.password" />
  </el-form-item>

  <el-button size="large" class="subBtn">点击登录</el-button>
</el-form>

演示效果

自定义校验规则

<script>中的规则中,数组中的每一个对象都是一个校验规则,我们只需要给一个对象给出validator()方法的实现即可:
该方法有三个参数:

validator(rule, value, callback){
	// rule此条规则的描述信息
	// value表单中此字段的值
	// 回调函数,通过此函数控制是否校验通过
}

看个例子

// 定义校验规则
const rules = reactive({
// 普通的校验规则
  account: [
    { required: true, message: '账户不能为空', trigger: 'blur' },
    { min: 6, max: 14, message: '用户名长度为6 - 14位' }
  ],

  password: [
  // 自定义校验规则
    {
      validator(rule, value, callback) {
        if (value[0] === '0') {
	      // 校验不通过
          return callback(new Error('密码字段的第一位不能是0'))
        } else {
          // 校验通过
          callback()
        }
      }
    }
  ]

})

在模版中使用为字段使用此条校验规则

<el-form
  :model="form"
  :rules="rules"
>
  <!--
	label标签名
	prop属性,指定校验规则中的
  -->
  <el-form-item label="账户" prop="account">
	<!-- v-model将值收集到哪个变量中 -->
	<el-input v-model="form.account" />
  </el-form-item>
  <el-form-item label="密码" prop="password">
	<el-input v-model="form.password" />
  </el-form-item>
  <el-button size="large" class="subBtn">点击登录</el-button>
</el-form>

演示效果

表单统一校验

如果用户什么都不输入,直接点击登录,那么每个字段的校验规则是不生效的,因为此字段还没有输入。
为了避免用户在不操作表单的情况下,直接提交表单,可以在用户点击提交按钮后,对所有的字段重新激活一次校验。
通过表单对象的一个方法validate()方法,对整个表单的所有内容进行一次验证。

form.validate(callback)

此方法接收一个回调函数,回调函数的第一个参数,是布尔类型,当所有的校验规则都通过时,此值是true,否则false
回调函数的第二个参数是校验未通过的所有字段的数组
在form表单中通过ref属性标识一下

<el-form ref="formRef">
</el-form>

<script>部分

// 获取form表单引用
const formRef = ref(null)
// 当点击登录按钮时的函数
const submit = () => {
  // 获取到真正的表单元素
  formRef.value.validate((isValid, invalidFields) => {
    if (isValid) {
      // 表单所有元素验证通过,可以提交了
      console.log('验证通过')
    } else {
      console.log(invalidFields)
      console.log('验证不通过,不能提交,请检查')
    }
  })
}

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

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

相关文章

(一)CSharp-Net框架

.NET框架由三部分组成&#xff1a; 1.编程工具。 2.基类库(BCL). 3.公共语言运行库(CLR) CLR 在运行时管理程序的执行&#xff0c;包括以下内容&#xff1a; 内存管理和垃圾收集。代码安全验证。代码执行、线程管理及异常处理。 NET 框架的特点以及其带来的好处&#xff1a…

web测试工程师的工作职责(合集)

web测试工程师的工作职责1 职责: 1、 负责数据平台产品的测试工作&#xff0c;参与产品需求分析&#xff0c;负责方案制定,并能预先评估项目风险&#xff0c;确保测试活动的顺利开展; 2、 深入理解系统内部的设计原理&#xff0c;并能从测试的角度提供优化意见; 3、 根据产品需…

【Linux】多线程概念初讲

线程大章节第一篇文章 文章目录 前言一、linux线程基本概念二、线程与进程的对比 1.线程控制的接口总结 前言 什么是线程呢&#xff1f; 在一个程序里的一个执行路线就叫做线程&#xff08; thread &#xff09;。更准确的定义是&#xff1a;线程是 “ 一个进程内部的控制…

Nginx+Tomcat负载均衡、动静分离,4层代理,7层代理

一&#xff1a;7层反向代理 Nginx 服务器&#xff1a;192.168.52.200:80 Tomcat服务器1&#xff1a;192.168.52.201:80 Tomcat服务器2&#xff1a;192.168.52.108:8080 192.168.52.108:8081 一.部署Nginx 负载均衡器 1.关闭防火墙 注意&#xff1a;所有的虚拟机都要注意关闭防…

硬件入门什么是之电阻

第1章 硬件入门什么是之电阻 文章目录 第1章 硬件入门什么是之电阻[TOC] 一、电阻基本概念二、电路设计实际应用1.限流( 恒流)2.分压 { 采样&#xff1a;电阻精度至少为1%}3.上拉和下拉4.分担功耗5.通信芯片的阻抗匹配 总结 一、电阻基本概念 对电流有阻碍作用的导体叫做&…

NFS(Network File System)服务搭建

NFS基础服务搭建 环境介绍:服务拓扑:nfs serverclient1临时挂载永久挂载client2临时挂载永久挂载注意事项:环境介绍: 系统全为centos7系统 使用本地yum源 服务拓扑: nfs server yum -ty install nfs-utilst rpcbind setenforce 0 mkdir /var/{world,cloud} echo -e “/va…

【Python XML】零基础也能轻松掌握的学习路线与参考资料

Python是一种广泛使用的编程语言&#xff0c;可以用来处理各种数据类型&#xff0c;并且具有广泛的应用&#xff0c;从Web开发到人工智能都能够胜任。在这样的大环境下&#xff0c;XML&#xff08;扩展标记语言&#xff09;成为了一项非常重要的数据交换格式&#xff0c;它提供…

JAVA对象头的指针压缩

JAVA对象头的指针压缩 文章目录 JAVA对象头的指针压缩对象在JVM中的内存布局对象的访问定位压缩实验实验步骤压缩策略组合压缩内容压缩后的影响指针压缩的实现 JVM内存关键大小 对象在JVM中的内存布局 在 Hotspot 虚拟机中,对象的内存布局主要由 3 部分组成&#xff1a; 对象头…

OpenMMLab AI 实战营笔记4——MMPreTrain算法库:构建高效、灵活、可扩展的深度学习模型

文章目录 摘要一、工具箱介绍二、丰富的模型三、推理API四、环境搭建——OpenMMLab软件栈五、OpenMMLab重要概念——配置文件六、代码框架七、配置及运作方式经典主干网络残差网络Vison Transformer(VIT)注意力机制自监督学习常见类型SimCLRMAE自监督学习 多模态CLIPBLIPOthers…

jvm 命令和工具

目录 堆内存分析工具 MAT ZProfiler - 线上的mat EagleEye-MProf - 命令行 命令行 线程池排查 jstack jmap -dump jmap -heap jstat 堆内存分析工具 MAT eclipse官方推出的本地内存分析工具&#xff0c;运行需要大量内存&#xff0c;从使用角度来讲&#xff0c;并不…

Mysql查询优化

Mysql查询优化器 在多种情况下,可能会导致查询结果从缓存中清除,例如:. 数据可能已被修改 您可能运行了一条语句,其文本与缓存的语句略有不同(小写/大写,换行符,...) 缓存可能已达到其大小限制之一(内存,查询计数,块等),并决定逐出您的特定查询 高速缓存碎片过多…

DatenLord前沿技术分享 No.26

达坦科技专注于打造新一代开源跨云存储平台DatenLord&#xff0c;通过软硬件深度融合的方式打通云云壁垒&#xff0c;致力于解决多云架构、多数据中心场景下异构存储、数据统一管理需求等问题&#xff0c;以满足不同行业客户对海量数据跨云、跨数据中心高性能访问的需求。达坦科…

SpringBoot+MyBatisplus搭建校园新闻平台——已开源

概述 开发背景 校园新闻平台是以新闻宣传机构的在线信息发布需求为基础&#xff0c;随着数字化和信息化的快速发展&#xff0c;校园新闻在校园内的传播和沟通中变得越来越重要。学校需要一个有效的管理系统来整合、发布和传播校园新闻&#xff0c;以满足师生、校友和其他利益…

我对测试行业发展和自我价值诉求的思考

测试圈子生态的思考 其实测试的生态&#xff0c;说起来蛮简单的&#xff0c;一个词语概括就是两极分化。有个梗&#xff1a;hand hands&#xff0c;load loads&#xff0c;太贴切了。 两极分化这个词&#xff0c;可以从下面三个维度来看&#xff1a; 薪资 我认识的测试也算不少…

搜索插入位置 力扣 Python

题目描述&#xff1a; 解题代码&#xff1a; class Solution:def searchInsert(self, nums: List[int], target: int) -> int:if target in nums:return nums.index(target)else:nums.append(target)nums.sort()return nums.index(target)题目分析&#xff1a; 时间复杂度…

0804空间直线及其方程-向量代数与空间解析几何

文章目录 1 空间直线方程1.1 空间直线的一般方程1.2 空间直线的对称式方程1.3 空间直线的参数方程1.4 空间直线的两点式方程 3 两直线的夹角4 直线与平面的夹角4.1 定义4.2 夹角的正弦公式 5 例题6 平面束方程结语 1 空间直线方程 1.1 空间直线的一般方程 空间直线L可以看做是…

【3DsMAX】从零开始建房(4)

目录 1. 制作二层主体 2. 制作二楼顶层栏杆 1. 制作二层主体 将二层的长方体转换为可编辑多边形&#xff0c;将左半部分的点向左移动一点距离 选中左右边线进行连接 移动连接线 选中如下的面挤出 选中一条边线&#xff0c;再点击环形 再点击连接 挤出 选中如下一条边线向上移…

【Windows安装】Windows详细安装nginx部署教程

1、先下载直接去官网nginx.org 点击后就会下载&#xff0c;下载完成后开始安装&#xff0c;其实官网已经告诉了如何安装&#xff0c;右侧“documentation -> nginx windows”就有详细的说明&#xff0c;只是英文而已 2、下载完成后&#xff0c;解压缩&#xff0c;运行cmd&a…

【网络工程师必备知识点】从头认识IPv6!

1. IPv6 的背景 IPv4 地址空间已经消耗殆尽&#xff0c;近乎无限的地址空间是 IPv6 的最大优势 2. IPv6 基本报头 在 IPv4 的基础上增加了流标签&#xff0c;去掉了一些冗余字段&#xff0c;使报文头部的处理更 为简单、高效 3. IPv6 扩展报头 是跟在 IPv6 基本报头后面的可…

自定义类型作为map或者unordered_map的key需要额外做哪些事情

文章目录 1、自定义类型作为map的key2、自定义类型作为unordered_map的key 1、自定义类型作为map的key map中有4个参数&#xff0c;前两个参数是key和val的类型&#xff0c;第三个参数表示比较的仿函数&#xff0c;用于对键值进行比较&#xff0c;默认情况下采用less<Key>…