el-form表单在循环里如何写rules表单校验,解决办法

2024-08-23 10:04

本文主要是介绍el-form表单在循环里如何写rules表单校验,解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

el-form表单在循环里如何写rules表单校验,解决办法

在日常开发中我们经常可以遇到 在form中 循环嵌套多个的情况 比如点击加减新增删除 并且还需要校验表单如何写呢?

实现办法

1.html (举例)

contractFeesForm 为总数据源 <el-form :model="contractFeesForm" ref="contractFeesFormRef" :rules>这里的rules需动态生成
<div v-for="(contractItem, contractIndex) in contractFeesForm.payment"><el-divider></el-divider><el-row :gutter="24"><el-col :span="8">这里 我们既然是在循环内 在每个item上绑定的 prop 就不能是固定写死的 不然没办法进行表单校验 就需要写成 xxxx[0,1,2......].属性值这样的 index 为动态的<el-form-item :prop="`payment[${contractIndex}].payment_type`" label="名称"><el-selectv-model="contractItem.payment_type"filterableclearableplaceholder="请选择"><el-option v-for="v in paymentList" :label="v.name" :value="v.id" /></el-select></el-form-item></el-col><el-col :span="8">这个地方也同理 对应该el-select的数据源<el-form-item :prop="`payment[${contractIndex}].payment_unit`" label="名称"><el-select v-model="contractItem.payment_unit" filterable clearable placeholder="请选择"><el-option v-for="v in paymentunitList" :label="v.name" :value="v.id" /></el-select></el-form-item></el-col><el-col :span="8">这个地方也同理 对一个该el-select的数据源<el-form-item :prop="`payment[${contractIndex}].payment_mode`" label="名称"><el-select v-model="contractItem.payment_mode" filterable clearable placeholder="请选择"><el-option v-for="v in paymentmodeList" :label="v.name" :value="v.id" /></el-select></el-form-item></el-col></el-row></div>

2.js

// 动态生成校验规则
const rules = ref()
//rules方法封装
const generateFieldRules = (fields: string[], message: string) => {
//fields 为 payment[1,2,3...].xxx
//message 为 提示校验的内容return fields.reduce((acc, field) => {acc[field] = [{ required: true, message, trigger: 'blur' }]return acc},{} as Record<string, any>)
}
const updateRules = () => {const newRules: Record<string, any> = {}//我们获取payment这个数组并进行forEach 循环 主要是获取 index 和 字段名拼接contractFeesForm.value.payment.forEach((_, index) => {const paymentFields = [ // 这里的字段就是需要校验的字段'payment_type','payment_unit','payment_mode'... ]//使用Object.assign进行对象拼接拷贝Object.assign(newRules,//在这里调用上面封装好的rules方法将对应的 field 和 index 拼接进去generateFieldRules(paymentFields.map((field) => `payment[${index}].${field}`),'请输入'))})//校验赋值rules.value = { ...newRules }
}
// 初始更新校验规则
updateRules()

3,然后我们在确认校验操作逻辑里

const contractFeesFormRef = ref<FormInstance | null>(null)
contractFeesFormRef.value.validate(async (valid: boolean) => {if (valid) { .... // 即可

这篇关于el-form表单在循环里如何写rules表单校验,解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099074

相关文章

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

JAVA中while循环的使用与注意事项

《JAVA中while循环的使用与注意事项》:本文主要介绍while循环在编程中的应用,包括其基本结构、语句示例、适用场景以及注意事项,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录while循环1. 什么是while循环2. while循环的语句3.while循环的适用场景以及优势4. 注意

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

spring 参数校验Validation示例详解

《spring参数校验Validation示例详解》Spring提供了Validation工具类来实现对客户端传来的请求参数的有效校验,本文给大家介绍spring参数校验Validation示例详... 目录前言一、Validation常见的校验注解二、Validation的简单应用三、分组校验四、自定义校

Python中的异步:async 和 await以及操作中的事件循环、回调和异常

《Python中的异步:async和await以及操作中的事件循环、回调和异常》在现代编程中,异步操作在处理I/O密集型任务时,可以显著提高程序的性能和响应速度,Python提供了asyn... 目录引言什么是异步操作?python 中的异步编程基础async 和 await 关键字asyncio 模块理论