elementUI-表单-校验

配置校验

1、在el-form 标签上配置
<el-form ref="form" :model="form" label-width="120px" :rules="rules"><!-- 若干个的el-form-item标签  -->
</el-form>

其中

:model=“form” 必须配置 表单数据对象 form 指的是该表单对应的data中的表单,而 el-form-item 绑定的数据大多都在这个form中

:rules=“rules” 必须配置 表单验证规则

ref=“form” 必须配置 后面 是 选中该表单进行全表单校验 或者 是单个数据的校验 会用到

:inline=“true” 非必须 行内表单模式 值为true则表单中元素排列在一行;不配置则默认值为false

disabled 禁用表单,禁止编辑

2、在 el-form-item 标签上配置
<el-form-item label="设备名称" prop="name"><el-inputv-model="form.name"clearableplaceholder="请输入设备名称"></el-input>
</el-form-item>

其中

label=“设备名称” 是该输入框的名字

prop=“name” 必须配置 指定该项字段

:rules=“xxxx” 非必须 一般都在data中统一配置校验规则

3、在 data 中配置校验规则
data() {return {rules: {xxxx}}
4、在提交表单时进行校验
全表单校验-validate
    submitForm() {this.$refs["form"].validate((valid) => {  //   选中ref名为 form  的元素进行校验 if (valid) {                            //   如果校验通过才会对数据进行下一步处理,if (this.form.id !== undefined) {updateEquipment(this.form).then((response) => {this.msgSuccess("修改成功");this.open = false;this.getList();});} else {                             equipmentAdd(this.form).then((response) => {this.msgSuccess("新增成功");this.open = false;this.getList();});}}});},
对单个表单数据进行校验-validateField
this.$refs.formRef.validateField('name',err  => {  // 选中ref值为 formRef 的元素进行校验if(!err){                                      // 通过,则...........alert('姓名校验通过啦!')}
})
清除表单校验-clearValidate

清除表单校验,一般用于表单的取消编辑和关闭表单时使用,避免下次打开表单时校验规则残留在表单上

this.$nextTick(() => {                       //  最好包裹在 $nextTick 函数里清除校验,将回调延迟到下次 DOM 更新循环之后执行this.$refs.formRef.clearValidate();
});
重置表单值-resetFields

对整个表单进行重置,将所有字段值重置为初始值 并 移除校验结果

所以,根据开发需要自行选择

注意:这里的重置为初始值。也就是在data中书写的初始值,当表单第一次在页面中渲染时所用的数据就是初始数据,而不是把值都变为空;注意概念

this.$refs[formName].resetFields();// 选中ref值为formName 的 表单 把表单数据重置为初始值并且清除其校验规则

案例-清除表单校验

需求:让表单弹窗在点击X号以及取消按钮时都清除本次的校验记录,且把表单数据重置为初始值

解决方案:让X号的回调以及取消按钮所触发的回调都触发同一个函数,在该函数里清空校验记录即可

1、弹窗配置:@close=“cancel”

<el-dialog:title="title":visible.sync="open":width="dialogWidth"@close="cancel"
></el-dialog>

2、表单中的取消按钮

<el-button @click="cancel">取 消</el-button>

3、cancel()

通常有时候还需要在该函数里做一些其他操作,因为resetFields有时候并不能保证可以清空form表单中的数据,那么就需要额外的对form表单数据进行清空

cancel() {this.open = false;                //  关闭弹窗this.$refs["form"].resetFields(); //  清空ref名为form的表单校验规则
},

当然,会存在不生效的问题

问题一:在还没有显示对话框之前就调用this.$refs[‘form’].resetFields(),会报错。

// 解决办法
this.$nextTick(() => {this.$refs['form'].resetFields();
});

问题二:如果添加和修改共用一个表单时就会出现重置无效的情况。

// 解决办法
this.$nextTick(() => {utils.copyFormObject(data, this.form);
});

校验规则-rules

其中

required 参数的值为true时,表单校验时 框框前面 才会出现 红点

message 就是 校验失败后 报错的 提示信息

trigger 校验触发时机 blur:表单元素失去焦点时触发; change:表单元素的值发生变化时触发;

type 值的类型 string: 字符串(默认值) number: 数字 boolean: 布尔值 method: 函数 regexp: 正则表达式 integer: 整数 float: 浮点数 array: 数组 object:对象 enum: 枚举类型,可以参考 百度资料-枚举类型 date: 日期类型 url: URL类型,如 https://www.baidu.com/ hex: 文件格式类型,如 :020000040000FA email: 邮箱类型,如 3652452@qq.com any: 任意类型

pattern 正则校验规则写在这里嗷!!!

若只有一条校验规则,使用对象写法,直接就可以写在 el-form-item 头标签中;当然也可以统一在data中配置(建议)

:rules="{ required: true, message: '不能为空'}"    //  写在  el-form-item 头标签中的写法rules:[company_no:{ required: true, message: "公司名称不能为空", trigger: "blur" }]       //  在data中配置的写法,需要在校验规则前指明是哪个字段,前面所指的就是 company_no 字段的校验规则

若有多条校验规则,则使用对象数组;在一个数组中书写多个校验规则;下面是一个字段对应一个数组对象的校验

rules: [company_no: { required: true, message: "公司名称不能为空", trigger: "blur" },status: { required: true, message: "状态不能为空", trigger: "blur" },type: { required: true, message: "设备类型不能为空", trigger: "blur" },model : { required: true, message: "设备型号不能为空", trigger: "blur" }mach_code : { required: true, message: "机器码不能为空", trigger: "blur" }],

若有多条校验规则且有的字段就不止一个校验规则,则使用对象数组;在一个数组中书写多个校验规则;下面是一个字段对应多个数组对象的校验

rules: {username: [{ required: true, message: "用户名不能为空", trigger: "blur" },{ min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }],status: { required: true, message: "状态不能为空", trigger: "blur" }
},

正则校验

nickname: [{message: "昵称不能为空",trigger: "blur",required: true,},{pattern: /^[\u4e00-\u9fa5]{2,5}$/g,message: "只能输入中文不要加其他字符且长度为2到5位",trigger: "blur",},
]

自定义校验规则

往往很多时候,常规的校验规则不能满足项目要求,那么此时就需要自定义校验规则加把劲

  data() {const validateUsername = (rule, value, callback) => {             //  自定义校验,自定义校验的话报错的提示信息就需要看返回的是什么了if (!validUsername(value)) {callback(new Error("请输入正确用户名"));} else {callback();}};const validatePassword = (rule, value, callback) => {             //  自定义校验if (value.length < 6) {callback(new Error("密码不能小于6位"));} else {callback();}};return {      //  data的返回值;在vue项目中,data必须是一个函数,是为了当组件每被复用一次时,都会返回一个新的一组data数据,各组件实例之间不影响,形成了良好的数据隔离,让各组件实例只维护自己的数据,自己变不影响其他loginRules: {username: [{ required: true, trigger: "blur", validator: validateUsername },    //  validateUsername  为自定义校验函数名,在自定义函数中书写自定义校验规则],password: [{ required: true, trigger: "blur", validator: validatePassword },],},};},

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

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

相关文章

怎么在echarts图上左右滑动切换数据区间

说在前面 不管前端还是后端&#xff0c;大家或多或少都了解使用过echarts图表吧&#xff0c;很多时候我们只是需要展示指定区间的数据&#xff0c;但有时我们希望在图表上能够轻松地切换数据的展示区间&#xff0c;以便更清晰地观察特定时间段或区域的变化。在本文中&#xff0…

【小爱学大数据】FlinkKafkaConsumer

今天小爱学习FlinkKafkaConsumer。 Apache Flink 是一个流处理和批处理的开源框架&#xff0c;它提供了数据流程序设计模型&#xff0c;以及运行环境和分布式执行引擎。FlinkKafkaConsumer 是 Flink 提供的一个 Kafka 消费者&#xff0c;用于从 Kafka 中消费数据。 下面是一个使…

kafka max.poll.records用法介绍

一、max.poll.records是什么 max.poll.records是Kafka consumer的一个配置参数&#xff0c;表示consumer一次从Kafka broker中拉取的最大消息数目。默认值为500条。 在Kafka中&#xff0c;一个consumer group可以有多个consumer实例&#xff0c;每个consumer实例负责消费一个…

贪吃蛇游戏制作

首先在ecilsp里面创建两个包&#xff0c;启动和图形界面 在创建一个文件夹用来放图片 1.绘制图形界面 package com.snaketuxing.view;import java.awt.Color; import java.awt.EventQueue; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import …

Element UI 禁用数字输入框组件添加鼠标滚动事件

Element UI 禁用数字输入框组件添加鼠标滚动事件 <el-input type"number" mousewheel.native.prevent DOMMouseScroll.native.prevent :min"0" onkeyup"this.valuethis.value.match(/\d\.?\d{0,2}/);"v-model"form.threeYearDevelop…

实验三 循环结构程序设计(Python)

第1关:打印图形 zm=input("") #代码开始#代码结束def print_pattern(letter):if not letter.isalpha() or not letter.isupper():print("请输入大写字母")returnstart_char = Aend_char = letterfor i in range(ord(start_char), ord(end_char) + 1):spa…

win10蓝屏重启故障修复经验分享

1. 安全模式&#xff1a;尝试进入安全模式&#xff0c;按住Shift键并同时点击“重新启动”选项。然后选择“故障排除”>“高级选项”>“启动设置”>“重新启动”。在启动设置页面&#xff0c;按下F4或按4键选择进入安全模式&#xff0c;观察是否仍然出现蓝屏重启问题。…

cmake+OpenCV4.8.0+contrib4.8.0+cuda 12.2编译踩坑

cmakeOpenCV4.8.0contrib4.8.0cuda 12.2编译踩坑 准备工具 cmake &#xff08;去官网下载&#xff09;OpenCV 我下载的是官网发布最新的稳定版本对应的源码&#xff0c;官网目前是4.8.0&#xff0c;github下一个&#xff08;连不上的可以网上找找资源或者科学上网&#xff09…

【华为OD机试】分苹果【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 A、B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果, 他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9(1100 + 0101 = 9), B的计算规则是十进制加法,包括正常进位,…

听GPT 讲Rust源代码--src/bootstrap

图片来自 使用rust的image库进行图片压缩[1] File: rust/src/bootstrap/build.rs 在Rust源代码中&#xff0c;rust/src/bootstrap/build.rs这个文件是一个构建脚本。构建脚本是一个在编译Rust编译器本身时运行的程序&#xff0c;它用于初始化和配置Rust编译器的构建过程。build…

tcpdump使用方法

目录 安装 tcpdump 使用基本命令 示例 1. 捕获所有流量 2. 指定网络接口 3. 保存到文件 4. 显示包的详细信息 5. 过滤特定主机 6. 过滤特定端口 7. 组合过滤条件 更多选项和过滤表达式 tcpdump 是一个用于在命令行中进行网络抓包的工具&#xff0c;它允许你捕获和分…

基于SSM的焦作旅游协会管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

nginx学习(4)Nginx 负载均衡

负载均衡&#xff1a;是将负载分摊到不同的服务单元&#xff0c;既保证服务的可用性&#xff0c;又保证响应 足够快&#xff0c;给用户很好的体验。 在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服 务&#xff0c; 而且 Nginx 提供了几种分配方式(策略)&#…

rust打印闭包的插件实现

背景 “调试”编译器的某些行为时,可以通过编译器错误输出来判断 比如想知道一个类型是否实现了某个trait fn main() {use std::fmt::Debug;struct A;fn foo<T: Debug>(t: T) {}let a = A;foo(A); }提示:required by this bound in foo 意思就是:结构体A没有实现Deb…

ES6有何新特性?(下篇)

目录 函数参数的默认值设置 rest参数 扩展运算符 Symbol 迭代器 生成器 Promise Class 数值扩展 对象方法扩展 模块化 大家好呀&#xff01;今天这篇文章继续为大家介绍ES6的新特性&#xff0c;上上上篇文章介绍了一部分&#xff0c;这篇文章会将剩下的部分新增的特…

ES索引数据清理脚本示例

说明&#xff1a;我得索引是按月份创建的&#xff0c;索引名后面都有yyyy.MM 需求&#xff1a;删除三个月以前的索引&#xff0c;清理收集的应用日志数据&#xff0c;释放磁盘空间 #!/bin/bash# 定义 Elasticsearch 节点的地址 ELASTICSEARCH_HOST"192.168.53.100" …

虚拟化逻辑架构: 创建KVM中的VM与实现VNC远程登录

目录 一、实验 1.安装KVM环境管理工具并创建VM&#xff08;虚拟机&#xff09; 2.Windows使用VNC Viewer连接KVM中的VM&#xff08;虚拟机&#xff09; 二、问题 1.如何下载安装VNC Viewer 一、实验 1.安装KVM环境管理工具并创建VM&#xff08;虚拟机&#xff09; (1) 采…

德迅云安全和您聊聊关于DDOS高防ip的一些方面

德迅DDoS防护服务是以省骨干网的DDoS防护网络为基础&#xff0c;结合德迅自研的DDoS攻击检测和智能防护体系&#xff0c;向您提供可管理的DDoS防护服务&#xff0c;自动快速的缓解网络攻击对业务造成的延迟增加&#xff0c;访问受限&#xff0c;业务中断等影响&#xff0c;从而…

代码随想录算法训练营第二十九天| 491 递增子序列 46 全排列

目录 491 递增子序列 46 全排列 491 递增子序列 在dfs中进行判断&#xff0c;如果path的长度大于1&#xff0c;则将其添加到res中。 本题nums中的元素的值处于-100与100之间&#xff0c;可以将元素映射0到199之间并且通过布尔数组st来记录此层中元素是否被使用过&#xff0c;…

BeansTalkd 做消息队列服务

无意间看到这个仓库讲php关于 BeanStalkd 的扩展&#xff0c;然后就去了解了一下beanstalkd&#xff0c;用它可以用来做队列服务。 话不多说&#xff0c;安装一下试试。 首先 sudo apt search beanstalk 搜索一下发现 Sorting... Done Full Text Search... Done awscli/focal…