vue element 动态增加表单并进行表单验证

表单验证:
需要注意的一点是:

普通表单验证单项依靠的是prop…而动态生成的表单要用:prop

书写的语法是:prop="‘moreNotifyObject.’ + index +’.notifyobject’",moreNotifyObject是v-for绑定的数组,index是索引,notifyobject是表单绑定的v-model的名称,然后用.把他们链接起来。

所以总结起来的语法就是:prop="‘v-for绑定的数组.’ + index + ‘.v-model绑定的变量’"

还有一个需要注意就是v-for的写法,要将表单的model名写进去

<div class="moreRulesIn" v-for="(item, index) in addForm.moreNotifyObject" :key="item.key">

复制代码
<template>
  <div>
    <el-form ref="form" :model="addForm" label-width="80px">
      <div class="moreRules">
        <div
          class="moreRulesIn"
          v-for="(item, index) in addForm.moreNotifyObject"
          :key="item.key"
        >
          <el-row>
            <el-col :span="6">
              <el-form-item
                label="field"
                :prop="'moreNotifyObject.' + index + '.field'"
                :rules="[{ required: true, message: '请完善信息' }]"
              >
                <el-input
                  v-model="item.field"
                  placeholder="请输入field"
                  class="el-select_box"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item
                label="name"
                :prop="'moreNotifyObject.' + index + '.name'"
                :rules="[{ required: true, message: '请完善信息' }]"
              >
                <el-input
                  v-model="item.name"
                  placeholder="请输入name"
                  class="el-select_box"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item
                label="max"
                :prop="'moreNotifyObject.' + index + '.max'"
                :rules="[{ required: true, message: '请完善信息' }]"
              >
                <el-input
                  v-model="item.max"
                  placeholder="请输入max"
                  class="el-select_box"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6" align="center">
              <el-button @click="deleteRules(item, index)">删除</el-button>
            </el-col>
          </el-row>
        </div>
         <el-button @click="addUser">增加</el-button>
         <el-button @click="initData">清空</el-button>
      </div>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      addForm: {
        name: "",
        content: "",
        moreNotifyObject: [
          {
            field: "",
            name: "",
            max: "",
          },
          {
            field: "",
            name: "",
            max: "",
          },
        ],
      },
    };
  },
  methods: {
    initData() {
      this.addForm.moreNotifyObject = [];
    },
    addUser() {
      this.addForm.moreNotifyObject.push({
        field: "",
        name: "",
        max: "",
      });
    },
    deleteRules(item, index) {
      this.index = this.addForm.moreNotifyObject.indexOf(item);
      if (index !== -1) {
        this.addForm.moreNotifyObject.splice(index, 1);
      }
    },
  },
};
</script>

<style lang="scss" scoped>
</style>
复制代码

 

posted @   7c89  阅读(429)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示