vue2新增表单中 两层嵌套对象数据 做必填校验

表单中循环生成表格并添加必填校验,通常涉及到动态表单的构建与验证机制的设置。以下是一个基于 Vue 框架(如 Element UI)实现的解决方案,包括如何嵌套表格以及如何为表格字段添加必填验证。 ### 基本结构 使用 `<el-form>` 包裹整个表单内容,并将一个对象 `formObj` 作为 `model` 传入,其中包含一个数组 `list`,用于存储表格数据[^1]。 ```html <el-form ref="formRef" :model="formObj" :rules="rules"> <el-table :data="formObj.list"> <el-table-column prop="name" label="名称"> <template slot-scope="{row}"> <el-form-item :prop="'list.' + row.index + '.name'" :rules="rules.name"> <el-input v-model="row.name"></el-input> </el-form-item> </template> </el-table-column> <!-- 其他列 --> </el-table> </el-form> ``` ### 动态验证 为了确保每个表格行中的字段都能被正确验证,需要为每一行定义唯一的 `index` 属性,并在 `rules` 中定义相应的规则。这样可以针对每一条记录进行独立的校验。 ```javascript data() { return { formObj: { list: [ { name: '', index: 0 }, // 更多条目... ] }, rules: { name: [ { required: true, message: '请输入名称', trigger: 'blur' } ] } }; } ``` ### 验证函数 当提交表单时,可以通过 `$refs.formRef.validate` 方法触发整个表单的验证。如果存在多个表单项需要分别处理,也可以通过遍历数组来逐个调用每个表单项的验证方法[^3]。 ```javascript submitForm() { let validationState = true; this.formObj.list.forEach((item, index) => { this.$refs[`ruleForm`][index].validate(valid => { if (!valid) { this.$message.warning(`参数${item.name}验证不通过`); validationState = false; } }); }); // 使用 callback 或 Promise 返回结果 } ``` ### 注意事项 - **字段唯一性**:确保每个 `<el-form-item>` 的 `prop` 是唯一的,以便于正确绑定到对应的验证规则上。 - **性能考虑**:对于大量数据的情况,频繁的验证可能会导致性能下降,因此应合理控制验证频率。 - **错误提示**:提供清晰的错误提示信息可以帮助用户更快地修正输入错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值