美文网首页
el-form复杂表单的校验,可动态添加删除

el-form复杂表单的校验,可动态添加删除

作者: 小鱼儿_逆流而上 | 来源:发表于2023-09-24 15:11 被阅读0次
小鱼儿心语: 没有人会关心你付出过多少努力,撑得累不累,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕嫉妒恨。
项目场景:

项目场景:一些大型的项目中,不仅仅是简单的 form表单校验,可能会有一些复杂的表单校验,如下图所示,带新增删除功能,同时删除新增的表单也需要做校验:

关键点:
  • 新增删除是对数组进行的操作,当然要遍历循环数组喽
  • props正常是要对应某个form中的元素,此时要对应list中的元素,该如何对应??通过
    :prop="machineList.${index}.***"
  • rules中的校验该如何校验呢:只能在元素中写上对应的校验,否则无法实现校验
add.png

完整代码实现:

<el-form ref="taskRef" :model="form" :rules="rules" label-width="130px" inline>
        <el-form-item label="参与人员">
          <el-button type="primary" class="addbtn" @click="addbtn">添加一条</el-button>
        </el-form-item>
        <div v-for="(items,index) in form.taskRel" :key="index">
          <el-button type="danger" icon="Delete" circle @click="deleteHeaderRow(index)"/>
          <el-form-item label="参与单位" :prop="`taskRel.${index}.deptId`" 
            :rules="{
              required: true,
              message: '请选择参与单位',
              trigger: 'change',
            }" label-width="100">
              <el-tree-select
                v-model="items.deptId"
                :data="items.deptOptions"
                :props="{ value: 'id', label: 'label', children: 'children' }"
                value-key="id"
                placeholder="请选择参与单位"
                :check-strictly="false"
                @change="changedept(items,index)"
                style="width: 470px;"
              />
          </el-form-item>
          <el-form-item label="参与人员" :prop="`taskRel.${index}.name`" 
            :rules="{
              required: true,
              message: '请选择参与人员',
              trigger: 'blur',
            }">
            <el-select
              v-model="items.name"
              filterablesize="small" 
              placeholder="请选择参与人员"
              multiple
              @change="changeuser(items)"
              style="width: 470px;">
              <el-option 
                v-for="(item,index) in items.userList" 
                :key="index" 
                :label="item.userName" 
                :value="item.userId">
              </el-option>
            </el-select>
          </el-form-item>
        </div>
      </el-form>

<script setup name="Task">
    const data = reactive({
      form: {taskRel:[]},
    }
    // 点击加号:添加一行header
    function addbtn() {
      form.value.taskRel.push({ deptId: '', name:'',partPeopleId: '', deptOptions:[], userList:[] });
    };

    // 点击减号:删除一行header
    function deleteHeaderRow (index) {
      form.value.taskRel.splice(index, 1);
    };
</script>

简单的小功能,希望可以帮助到你哦~~///(^v^)\~~

相关文章

  • el-form表单循环校验

    element-ui中el-form表单项循环渲染,并添加相关校验 关于这类功能需求,项目中还是挺常见的,所以今天...

  • voltType is not a string

    el-form表单校验时报错 项目需求要对输入的表单内容进行类型和长度校验,其他格式都没问题,唯独是数字类型和长度...

  • vue3 二次封装el-form表单

    二次封装el-form,理由无非就是多个地方用同一个表单,懒得重复写校验。 表单组件 组件的使用

  • elementUI el-form validate方法不执行

    表单组件 el-form validate 方法不执行,检查自定义校验规则方法,是否执行了 callback 方法。

  • 循环数据进行表单验证

    使用表单验证,如需进行表单某个单独元素验证,在表单el-form添加rules规则,相应的元素对应相应的prop值...

  • element ui 表单校验

    添加校验的方法:1、给el-form添加rules属性,rules的值是一个对象,每一项是校验规则数组,el-fo...

  • 关于el-form表单动态校验失效的问题

    注意官方提示是这种格式 为什么我们的prop为什么这样写 或者使用模板字符串 而不能这样写

  • vue enter 刷新页面

    el-form表单里,给el-input标签添加enter事件,回车时刷新页面 解决方案:在el-form标签里添...

  • Vue.js-ElementUI表单

    1 表单el-form 每个表单el-form由多个表单域el-form-item组成。默认情况,表单域是垂直分布...

  • Element、iview 表单校验总结

    本文分享主要内容:基本用法、校验方式、部分校验(关联交验)、新增校验、 动态切换校验、校验/重置Form表单、日期...

网友评论

      本文标题:el-form复杂表单的校验,可动态添加删除

      本文链接:https://www.haomeiwen.com/subject/zybfbdtx.html