element-ui 表单校验・大全
目录
- 1、对全部表单项的校验
- 2、校验指定字段
- 3、自定义函数校验表单
- 4、一行内多个输入框的校验
element-ui 官网
element-ui 表单校验的规则如下:
<属性名>: [{ required: true,// 是否必填(若有label则在其左上角显示红点,否则不显示必填标志),可选。type: 'date',// 限制输入的数据类型,可选。min: 3,// 当输入的是数值时,限制输入的最小值,可选。max: 5,// 当输入的是数值时,限制输入的最大值,可选。pattern: /^\d+\.\d+\.\d+$/,// 正则表达式,可选。message: "请使用 x.x.x 格式编号",// 错误时提示信息,必须。trigger: ['change', 'blur']// 触发校验的事件,必须。监听单一事件用字符串,监听多个事件用数组},// ...
]
1、对全部表单项的校验
<template>
<form ref="formRef" :model="form" :rules="rules" hide-required-asterisk class="base-form" :label-width="120"><el-form-item label="编码:" prop="code"><el-input v-model="form.code" placeholder="请输入编码" clearable/></el-form-item><el-form-item label="地址" prop="address"><el-select v-model="form.address" placeholder="请选择一个城市" clearable><el-option label="上海" value="shanghai" /><el-option label="北京" value="beijing" /></el-select></el-form-item><el-form-item label="月份:" prop="moth"><el-input v-model="form.moth" placeholder="请输入月份" clearable/></el-form-item><el-form-item label="日期" prop="date"><el-date-picker v-model="form.date" type="date" placeholder="请选择日期" clearable/></el-form-item><el-form-item label="成员:" prop="members"><el-checkbox-group v-model="form.members"><el-checkbox label="一号" name="members" /><el-checkbox label="二号" name="members" /><el-checkbox label="三号" name="members" /></el-checkbox-group></el-form-item><el-form-item label="手机号:" prop="phone"><el-input v-model="form.phone" placeholder="请输入手机号" clearable/></el-form-item><el-form-item><el-button @click="submit(formRef)">保存</el-button></el-form-item>
</form>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'const formRef = ref(null)interface RuleForm {code: stringaddress: stringmoth: string | numberdate: Date | stringmembers: string[]phone: string
}const form = reactive<RuleForm>({code: '',address: '',moth: '',date: '',members: []phone: '',
})// 表单校验
const rules = reactive<FormRules<RuleForm>>({// 失焦触发校验code: [{ required: true, message: '请输入编码', trigger: 'blur' }],// 值改变时触发校验address: [{ required: true, message: '请选择一个城市', trigger: 'change' }],// 包含最大值和最小值moth: [{ required: true, message: '请输入月', trigger: 'blur' },{ min: 1, max: 12, message: '请输入1~12月中的一个', trigger: 'blur' },],// 带类型的校验 - 类型为日期date: [{ type: 'date', required: true, message: '请输入日期', trigger: 'change' }],// 带类型的校验 - 类型为数组members: [{ type: 'array', required: true, message: '请选择成员', trigger: 'change' }],// 带正则表达式的校验phone: [{ required: true, message: '请输入手机号', trigger: 'blur' },{ pattern: /^(13[0-9]|15[0-9]|17[0-9]|18[0-9]|19[0-9])[0-9]{8}$/, message: '请输入正确的手机号', trigger: 'blur' },],
})// 提交 - 对整个表单进行校验
const submit = async (formEl: FormInstance | undefined) => {if (!formEl) returnawait formEl.validate((valid, fields) => {if (valid) {console.log('submit!')} else {console.log('error submit!', fields)}})
}
</script>
2、校验指定字段
<template>
<form ref="formRef" class="base-form" :model="form" :label-width="120" :rules="rules" hide-required-asterisk><el-form-item label="编码:" prop="code"><el-input v-model="form.code" autocomplete="off" clearable @input="validateSelect" @keyup.enter="validateSelect"/></el-form-item>
</form>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'const formRef = ref(null)interface RuleForm {code: string
}const form = ref<RuleForm>({code: '',
})// 表单校验
const rules = reactive<FormRules<RuleForm>>({code: [{ required: true, message: '请填写编码', trigger: 'blur' }],,
})// 校验指定字段
const validateSelect = () => {formRef.value!.validateField('selectValue')
}
</script>
3、自定义函数校验表单
<template>
<form ref="formRef" class="base-form" :model="form" :label-width="120" :rules="rules" hide-required-asterisk><el-form-item label="手机号:" prop="phoneNumber"><el-input v-model="form.phoneNumber" autocomplete="off" clearable/></el-form-item>
</form>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'const formRef = ref(null)interface RuleForm {phoneNumber: string
}const form = ref<RuleForm>({phoneNumber: '',
})// 自定义校验 - 手机号
const checkPhoneNumber = (rule: any, value: any, callback: any) => {const pattern = /^(13[0-9]|15[0-9]|17[0-9]|18[0-9]|19[0-9])[0-9]{8}$/if(!value) {callback(new Error('请输入手机号'))} else if(!pattern.test(val)) {callback(new Error('请输入正确的手机号'))} else {callback()}
}// 表单校验
const rules = reactive<FormRules<RuleForm>>({phoneNumber: [{ validator: checkPhoneNumber, trigger: 'blur' }],,
})
</script>
4、一行内多个输入框的校验
<template>
<form ref="formRef" class="base-form" :model="form" :label-width="120" :rules="rules" hide-required-asterisk><el-form-item class="form-row" label="测试:" prop="test"><section class="form-col">1 <el-input class="ml-5" v-model="form.test[0]" placeholder="第1项" clearable/></section><section class="form-col">2 <el-input class="ml-5" v-model="form.test[1]" placeholder="第2项" clearable/></section></el-form-item>
</form>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'// 表单
const formRef = ref<FormInstance>()interface RuleForm {test: string[]
}const form = ref<RuleForm>({test: [],
})const checkTest = = (rule: any, value: any, callback: any) => {const [oneStr, twoEnd] = form.value.coordinateconst pattern1 = /^[EWew]?[+-]?([0-9]|[1-8][0-9]|90)(\.\d+)?$/const pattern2 = /^[NSns]?[+-]?([0-9]|[1-9][0-9]|1[0-7][0-9]|180)(\.\d+)?$/if (oneStr && twoEnd && pattern1.test(oneStr) && pattern2.test(twoEnd)) {callback()} else {!oneStr && !twoEnd && callback(new Error('请输入所有项'))!oneStr && callback(new Error('请输入第1项'))!twoEnd && callback(new Error('请输入第2项'))!(pattern1.test(oneStr)) && callback(new Error('请输入正确的第1项'))!(pattern2.test(twoEnd)) && callback(new Error('请输入正确的第2项'))!(pattern1.test(oneStr)) && !(pattern2.test(twoEnd)) && callback(new Error('请输入正确的项'))}
}const rules = reactive<FormRules<RuleForm>>({test: [{ validator: checkTest, trigger: 'blur' }],
})
</script>
相关文章:
element-ui 表单校验・大全
目录 1、对全部表单项的校验2、校验指定字段3、自定义函数校验表单4、一行内多个输入框的校验 element-ui 官网 element-ui 表单校验的规则如下: <属性名>: [{ required: true,// 是否必填(若有label则在其左上角显示红点,否则不显示必…...
搭建高性能分布式存储-minio
文章目录 搭建高性能分布式存储-minioDocker搭建minio(单机部署纠删码模式)⭐创建minio的bucket(桶)⭐SpringBootminio项目实战 ⭐1:导入minio的maven依赖2:编写MinioProperties.class3:applica…...
leetCode 137. 只出现一次的数字 II(拓展篇) + 模5加法器 + 真值表(数字电路)
leetCode 137. 只出现一次的数字 II 题解可看我的往期文章 leetCode 137. 只出现一次的数字 II 位运算 模3加法器 真值表(数字电路) 有限状态机-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/134138112?spm1001.2014.3001.5501…...
docker导致root空间满进入不了系统解决方案
由于docker建立镜像会产生很多缓存文件,最终导致root目录满,进入不了系统 df -h docker默认路径是在/var/lib/docker下 可以通过命令查看docker占用空间 docker system df 如果占用空间太大 可用以下命令清理 $ docker image prune -h Flag shorth…...
uni-app遮罩遮住小程序tabbar
uni-app遮罩遮住小程序tabbar 1、用uni-app自带的方法显示隐藏 //通过弹窗显隐控制导航栏的显示和隐藏 const popupChange e >{if(e.show){//隐藏tabbaruni.hideTabBar()}else{//显示tabbaruni.showTabBar()}state.searchIcon e.show } //通过弹窗显隐控制导航栏的显示和…...
Flink on yarn 加载失败plugins失效问题解决
Flink on yarn 加载失败plugins失效问题解决 flink版本:1.13.6 1. 问题 flink 任务运行在yarn集群,plugins加载失效,导致通过扩展资源获取任务参数失效 2. 问题定位 yarn容器的jar包及插件信息,jar包是正常上传 源码定位 加载plugins入口,TaskMana…...
显卡服务器的特点和优势在哪里
随着科技的发展以及人们对于计算机性能的需求提高,显卡服务器是主要使用图形处理器进行计算和运算,拥有更加强大的计算能力,今天小编就来给大家讲一讲显卡服务器的特点和优势是什么! 1.高可靠性:显卡服务器采用高品质的…...
c++设计模式二:原型模式
使用场景:当需要构建多个相同的类对象时,而且该类对象结构较为复杂,如果每个都重新组织构建会很麻烦。 其实,就是写一个拷贝构造函数,或者写一个拷贝每个成员变量的clone()方法。 举例说明:比如一个相亲网站…...
【Qt控件之QMessageBox】详解
Qt控件之QMessageBox 描述基于属性的API富文本和文本格式属性严重程度以及图标和Pixmap属性静态函数API 高级用法默认按钮和退出按钮示例使用场景 描述 QMessageBox类提供了一个模态对话框,用于通知用户或向用户提问并接收答案。 消息框显示一个主要文本以提醒用户…...
SSH安全登录远程主机
SSH服务器简介 SSH即Security SHell的意思,它可以将连线的封包进行加密技术,之后进行传输,因此相当的安全。 SSH是一种协议标准,其目的是实现安全远程登录以及其它安全网络服务。 SSH协定,在预设的状态下,…...
揭秘!产品经理提升效率的秘密武器:10款AI生成PPT工具
AI的爆炸式增长表现令人惊艳,现有的各类AI工具正在重塑各行各业,不同程度地提高人们的工作效率,并有望创造新的职业机会。但是,面对市面上数量众多的AI工具,且每周都会蹦出新的产品,即便是以好奇心富称的产…...
Oracle修改带数据的字段类型
insert into TNW_FUND_SELORG(TFDINFOID,TSOINFOID) select TFD_INFO_ID,TSO_INFO_ID from TFD_SEL_FUNDLINK_TO_OLDFUNDWEB_DB /*修改原字段名*/ ALTER TABLE 表名 RENAME COLUMN 字段名 TO 字段名1; /*添加一个和原字段同名的字段*/ ALTER TABLE 表名 ADD 字段名 VARCHAR…...
WebService接口方式和Restful接口这两者有什么区别和相同点
WebService和RESTful接口都是用于在网络上进行通信和数据交换的技术,但它们在设计和使用上有一些重要的区别和相似之处。 相同点: 基于HTTP协议:无论是WebService还是RESTful接口,它们都是通过HTTP协议进行通信的。 支持多种数据…...
jenkins自动化操作步骤(gitblit)
1、登陆地址: http://xxxxxxxxx.org:xxxx/ admin/xxxx 2、创建任务 选择构建一个maven项目 3、配置 最多只保留一天一个任务 选择git仓库和账号密码 选择代码对应分支 build项: 1)使用父项目的pom文件:k56-boot/pom.xml 2&…...
centos中mongodb设置服务自启动并 允许远程IP访问
安装mongodb参考 注意的是配置文件需要把journal设置为true 制作为系统服务 创建MongoDB服务文件。运行以下命令创建服务文件/etc/systemd/system/mongod.service: vi /etc/systemd/system/mongod.service [Unit] DescriptionMongoDB Database Server Documenta…...
实时定位和配送追踪:开发万岳同城外卖APP的关键技术特性
随着生活节奏的不断加快,外卖服务已经成为许多人日常生活中不可或缺的一部分。无论是工作日的午餐,还是周末的家庭聚会,外卖APP已经成为满足各种美食需求的首选方式。然而,同城外卖APP的成功不仅仅取决于美味的食物选择࿰…...
数据库强化(3.存储过程)
1.什么是存储过程? 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。MySQL 5.0 版本开始支持存储过程。 它是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中&a…...
雅思小作文笔记
mostly from Simon’s methods and techniques remember the task is describe what you see, not give an opinion. Just write a report.no conclusion, just a summary(the overview) Question type 小作文的题目类型大致如上 Simon所述,在描述数字的时候&…...
Java List Set Map
一、List 1.1 ArrayList 1.2 LinkedList 二、Set 2.1 HashSet 2.2 TreeSet 2.3 LinkedHashSet 三、Map 3.1 HashMap 3.2 TreeMap 3.3 LinkedHashMap 四、对比 类型底层结构重复null值场景备注查询删除新增ListArrayList动态数组可允许快速随机访问元素0(1)0(n)尾部增加0&a…...
【数据结构】数组和字符串(十三):链式字符串的基本操作(串长统计、查找、复制、插入、删除、串拼接)
文章目录 4.3 字符串4.3.1 字符串的定义与存储4.3.2 字符串的基本操作(链式存储)1. 结构体2. 初始化3. 判空4. 串尾添加5. 打印6. 串长统计7. 查找8. 复制9. 插入10. 删除11. 串拼接12. 销毁13. 主函数14. 代码整合 4.3 字符串 字符串(String)是由零个或…...
AI应用开发框架nuwax:从快速构建到生产部署全解析
1. 项目概述:一个AI驱动的开源应用框架 最近在开源社区里,我注意到一个名为 nuwax-ai/nuwax 的项目开始受到一些关注。乍一看这个标题,它像是一个GitHub仓库的地址,由 nuwax-ai 这个组织或用户创建,项目名称为 nu…...
告别MySQL单打独斗:若依多数据源整合TDengine 3.0的两种姿势与性能实测
告别MySQL单打独斗:若依多数据源整合TDengine 3.0的两种姿势与性能实测 时序数据库正在成为物联网、金融监控等高频数据场景的标配解决方案。当每秒需要处理成千上万条设备状态记录时,传统关系型数据库往往显得力不从心。TDengine作为国产时序数据库的佼…...
OpenUPM安全最佳实践:保护你的Unity包注册表完全指南 [特殊字符]
OpenUPM安全最佳实践:保护你的Unity包注册表完全指南 🔒 【免费下载链接】openupm OpenUPM - Open Source Unity Package Registry (UPM) 项目地址: https://gitcode.com/gh_mirrors/op/openupm OpenUPM作为开源Unity包管理器(UPM&…...
机器人遥测系统设计:从数据采集到可视化监控的工程实践
1. 项目概述:从开源代码仓库到可观测性实践最近在梳理一些开源机器人项目时,遇到了一个名为jizb880/openclaw_telemetry的仓库。乍一看,这个标题由两部分组成:一个可能是作者的用户名jizb880,以及一个极具指向性的项目…...
DuClaw智能体:DuClaw接入钉钉
本文主要介绍如何为DuClaw配置钉钉消息渠道,配置后即可通过对应的钉钉机器人与DuClaw进行对话。 钉钉侧配置 步骤一:创建钉钉应用。 前往钉钉开发者平台(需有管理员权限),点击“创建应用”。 在左侧目录中选择“钉钉…...
ESP32 ADC采样率上不去?实测DMA模式下的真实性能与避坑指南
ESP32 ADC DMA模式性能深度优化:突破2MSPS采样率的关键策略 在物联网边缘计算领域,ESP32凭借其出色的性价比和丰富的外设资源,已成为众多高速数据采集项目的首选方案。当开发者尝试将ESP32的ADC采样率推向理论极限时,往往会遭遇现…...
2026在校大学生进入财会行业学数据分析的价值
一、数据分析在财会行业的重要性数据分析已成为财会行业的核心技能之一,能够帮助从业者优化财务决策、提升审计效率、识别风险并支持战略规划。掌握数据分析能力的财会人员更具竞争力,尤其在数字化转型背景下,企业更青睐具备数据思维的财务人…...
GTA5线上小助手:终极免费工具让你的洛圣都之旅更精彩
GTA5线上小助手:终极免费工具让你的洛圣都之旅更精彩 【免费下载链接】GTA5OnlineTools GTA5线上小助手 项目地址: https://gitcode.com/gh_mirrors/gt/GTA5OnlineTools 还在为GTA5线上模式中繁琐的操作而烦恼吗?想要更轻松地管理游戏数据、快速到…...
在 Simulink 中实现并网双向 DC/AC 逆变器的无功补偿(SVG)功能仿真
目录 🛠️ 第一步:系统架构设计与模块搭建 ⚙️ 第二步:SVG 核心控制策略设计(双闭环控制) 📊 第三步:仿真运行与结果分析 手把手教你在 Simulink 中实现并网双向 DC/AC 逆变器的无功补偿(SVG)功能仿真。 在现代电力系统中,并网逆变器(如光伏、储能逆变器)不…...
