赞
踩
我们在开发时经常会遇到需要对表单数据进行验证的情况。而如果表单中包含了动态循环的数据,这个验证过程就会变得更加复杂。在这种情况下,我们需要使用一些高效的工具来简化我们的开发流程。而正是在这个时候,element 库中提供的表单验证功能就能为我们带来便捷和高效。在本文中,我们将探讨如何使用 element 中的表单验证功能,来处理动态循环的数据。
实现效果:
要想实现这个操作非常简单,其核心在于修改每一个 el-form-item 中 prop 绑定的属性值。默认情况下我们直接将 prop 动态绑定给校验规则的字段即可;在表单中有循环生成的表单体时,我们就需要改变 prop 的写法,如下图:
注意:
每一个循环中都需要加 rules
<template> <div class="formBox"> <h2>动态数据循环的表单验证</h2> <!-- 表单 --> <el-form :model="ruleForm" ref="formRef" :rules="rules" size="medium"> <div class="formContantBox" v-for="(item,index) in ruleForm.formData" :key="index"> <div> <el-form-item :prop="'formData.'+index+'.name'" :rules="rules.name"> <el-input placeholder="请输入姓名" v-model="item.name" clearable></el-input> </el-form-item> </div> <div> <el-form-item :prop="'formData.'+index+'.age'" :rules="rules.age"> <el-input placeholder="请输入年龄" v-model="item.age" clearable></el-input> </el-form-item> </div> <!-- 删除按钮 --> <div v-if="ruleForm.formData.length>'1'"> <el-button size="medium" type="danger" @click="remove(index)">删除</el-button> </div> </div> </el-form> <!-- 添加/保存按钮 --> <div> <el-button size="medium" type="success" @click="addition">添加</el-button> <el-button size="medium" type="primary" @click="preserve('form')">保存</el-button> </div> </div> </template> <script> export default { data() { return { // 校验规则 rules: { name: [{ required: true, message: "请输入姓名", trigger: "blur" }], age: [{ required: true, message: "请输入年龄", trigger: "blur" }], }, // 绑定数据 ruleForm: { formData: [ { name: "", age: "", }, ], }, }; }, methods: { // 添加事件 addition() { this.ruleForm.formData.push({ name: "", age: "", }); }, // 删除事件 remove(index) { this.ruleForm.formData.splice(index, 1); }, // 提交事件 preserve() { this.$refs.formRef.validate((valid) => { if (valid) { console.log("提交成功!"); } else { console.log("失败!"); return false; } }); }, }, }; </script> <style scoped> .formBox { margin: 20px; padding: 20px; background: white; border-radius: 30px; } h2 { margin-bottom: 20px; } .formContantBox { display: flex; } .formContantBox div { margin-right: 4px; } </style>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。