Element表单v-for循环校验问题

开发过程中碰到了这个问题,自己也是搜索了一番,刚开始跟着网上的答案进行了一番操作没有实现,后来在一条答案中发现官方上就有,去ElementUi官网看了一下,跟着官网试了一下,立马实现。为了解决这个问题还到gitHub上的issues搜过,没想到官网就有相关例子,真是踏破铁鞋无觅处,得来全不费工夫。在此记录总结一下,不要再重蹈覆辙,浪费时间。相关详情可以移步到官网

Elemnt

要想实现效果,最主要的是prop一定要跟官网上一样,而且prop要写成:prop,因为是动态加载

一定要注意v-model与prop字段保持一致,这样就能实现了。

 

### Vue3 中 `v-for` 动态表单校验 在 Vue3Element Plus 结合使用的场景下,对于通过 `v-for` 循环生成的动态表单项进行校验,可以采用特定的方式设置 `el-form-item` 的属性来确保每一项都能被正确地验证。 #### 设置 `el-form-item` 属性 为了使每一个由 `v-for` 创建出来的子表单项能够参与整体表单的校验逻辑,在创建这些项目时需指定唯一的 `prop` 属性。这可以通过拼接字符串的方式来完成,例如: ```html <template> <el-form :model="dynamicForm" ref="ruleFormRef"> <div v-for="(item, index) in dynamicForm.items" :key="index"> <!-- 使用索引来构建唯一路径 --> <el-form-item :label="&#39;Item &#39; + (index + 1)" :prop="&#39;items.&#39; + index + &#39;.value&#39;" :rules="formRules.itemValueRule"> <el-input v-model="item.value"></el-input> </el-form-item> </div> </el-form> </template> ``` 上述代码片段展示了如何利用模板语法中的表达式为每个迭代元素分配独特的 `prop` 值[^2]。这样做不仅使得各个字段可以在整个表单上下文中得到识别,同时也允许针对它们应用具体的校验规则。 #### 定义校验规则 接着定义适用于所有重复项目的公共校验规则对象,并将其应用于相应的 `el-form-item` 上: ```javascript <script setup> import { reactive } from "vue"; const ruleFormRef = ref(null); // 表单模型数据结构 let dynamicForm = reactive({ items: [ { value: &#39;&#39; }, // 更多初始条目... ] }); // 校验规则配置 const formRules = { itemValueRule: [{ required: true, message: &#39;请输入内容&#39;, trigger: &#39;blur&#39; }] }; </script> ``` 这段脚本初始化了一个包含多个可编辑域的数据列表,并指定了一个简单的必填项校验条件给所有的输入框。 #### 提交并触发校验 当准备提交表单时,可通过调用 `$refs.ruleFormRef.validate()` 方法来进行完整的表单有效性检查。如果只想单独检验某个特定部分,则应使用 `validateField(field)` 函数传递目标字段名称作为参数[^3]。 ```javascript async function submitForm() { await ruleFormRef.value.validate((valid) => { if (!valid) return; console.log(&#39;Submit!&#39;); }); } ``` 以上就是基于 Vue3Element Plus 对于动态生成的表单执行全面或局部校验的一种有效方式[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值