v-for中动态校验el-form表单项代码示例

问题描述

在项目开发中,我们经常会遇到表单保存的功能,在表单保存前,常常需要做表单必填项的校验,校验通过以后才去发请求保存表单数据。
但是,这个表单如果是动态的,即:可以新增相同的表单。比如这个表单有输入框和下拉框需要校验,点击添加表格按钮,再新增一个相同的表单,同样新的这个表单对应的输入框和下拉框也需要校验。
本文记录一下对应代码写法思路,我们先看一下效果图:

效果图

v-for中动态校验el-form表单项代码示例_第1张图片

代码思路

  1. 表单的主数据是要写成对象形式 :model="ruleForm" 不过既然是要动态的,肯定是要循环呢,所以,可以写成这样:
ruleForm: {
        // 动态循环项数组
        formItemArr: [
          {
            name: "",
            gender: "",
          },
        ],
      },
  1. 点击添加表格的时候,就可以直接push对应项就行啦,即,这样:
// 添加一个表格
    addForm() {
      let itemObj = {
        name: "",
        gender: "",
      };
      this.ruleForm.formItemArr.push(itemObj);
    },
  1. 重点来喽,因为是循环的,所以prop也要变成动态的了,要拼接上index,就变成根据索引去找对应的校验项了,即为::prop="'formItemArr.' + index + '.name'" ,这样的话,就变成了:prop="formItemArr.0.name"、prop="formItemArr.1.name"、prop="formItemArr.2.name" ... 这样的话,就可以照顾到每一项中的每一个绑定的值了,校验就不会漏掉
  1. 校验规则写成内联就可以触发校验函数this.$refs["ruleForm"].validate((val) => {})

        ......

完整代码

演示的话,大家直接复制粘贴即可





好记性不如烂笔头,记录一下吧 ^_^

你可能感兴趣的:(v-for中动态校验el-form表单项代码示例)