关于ElementPlus中的表单验证

news/2024/10/18 7:53:16/

关于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-formstatus-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.ppmy.cn/news/248306.html

相关文章

vue3的api解读-watch

目录 副作用&#xff08;Side Effect&#xff09; 纯粹计算背后的效果【我们做UI时非常需要】 副作用的封装&#xff08;伪代码&#xff09; 副作用失效&#xff08;Invalidate&#xff09;问题 API:WatchEffect Coding&#xff1a;WatchEffect【演示代码】 /src/exampl…

【虚拟机】常用的9款虚拟机软件

&#x1f41a;作者简介&#xff1a;花神庙码农&#xff08;专注于Linux、WLAN、TCP/IP、Python等技术方向&#xff09;&#x1f433;博客主页&#xff1a;花神庙码农 &#xff0c;地址&#xff1a;https://blog.csdn.net/qxhgd&#x1f310;系列专栏&#xff1a;善假于物&#…

RestCloud-新一代(智能)全域数据集成平台

新一代智能全域数据集成平台 一、介绍1.1 企业级数据集成架构面临的痛点1.2 RestCloud说明1.3 重构企业数据融合架构&#xff0c;解决各种复杂、即时、高合规的数据集成需求1.4 (智能)全域数据集成平台1.5 300数据及应用连接器轻松汇聚全域数据 二、产品简介2.1 功能特性2.2 产…

基于双视角图表示算法的双向人职匹配偏好建模推荐系统构建

基于双视角图表示算法的双向人职匹配偏好建模推荐系统构建 文章目录 基于双视角图表示算法的双向人职匹配偏好建模推荐系统构建1. 传统推荐系统模型2. 协同过滤算法3. 基于双视角图表示学习算法的模型构建3.1 数据输入3.2 双视角交互图的构建3.3 混合偏好传播策略3.4 对于双向意…

简单的建立一个网络电视直播软件

网上有很多的软件或者网站都有网络电视直播的功能&#xff0c;电视台非常的丰富&#xff0c;不仅是卫视台&#xff0c;甚至是省市台&#xff0c;国外电视台都有&#xff0c;其实建立这样的一个软件非常简单。 其实整个网络电视就是一个WebBrowser中显示一个HTML网页就行了&…

智能电视聚好看连接服务器失败,最新海信电视网络故障解决方法汇总!新老用户值得收藏!...

智能电视标准不统一&#xff0c;所以使用起来也会繁琐&#xff0c;在使用过程中会遇到各种问题和操作上的麻烦。本文收集整理了一些关于海信电视使用中遇到一些网络方面的故障&#xff0c;并且一一给出解决方案。希望能够帮助到大家解决问题。 故障现象一&#xff1a; “聚好看…

1、网络硬件和软件

1.1、使用计算机网络 引言&#xff1a; 大量互相独立但彼此连接的计算机共同完成计算任务——这些系统被称为计算机网络。如何设计并组织这些网络是本书的主题。计算机与分布式系统的关键差别在于&#xff1a;由一组独立计算机组成的分布式系统呈现给用户的是一个关联系统。最…

新电视显示服务器失败,电视网络连接失败原因是什么

现在很多的家庭都会购买网络电视&#xff0c;网络电视使用起来非常方便&#xff0c;能够观看在线的电视或者是电影。在使用的过程当中&#xff0c;如果出现电视网络连接失败的情况&#xff0c;可能导致的原因也有很多。下面就由小编来为大家介绍一下&#xff0c;希望能够起到一…