ElementUI-多层数据的表单验证

问题描述

表单绑定的数据结构为多层次数据时,实现各层数据的表单字段校验

结构示例

{
    "name":"名称",
    "honor_items": [
         {
            "picture":"图片1",
            "introduce":"介绍1"
        },
        {
            "picture":"图片2",
            "introduce":"介绍2"
        }
    ]
},

解决方法

  • 表单需要绑定model值
  • 在需要验证的表单项上直接应用对应的规则
  • :prop=“honor_items[${index}].picture” :rules=‘rules.picture’
<template>
  <el-form label-position="left" label-width="95px" ref="editHonour" :model="operateHonourGroup">
    <el-form-item label="名称" prop="name">
      <el-input v-model="operateHonourGroup.name"/>
    </el-form-item>
    <div v-for="(item, index) in operateHonourGroup.honor_items" :key="index">
      <el-form-item label="图片" class="honour-img" :prop="`honor_items[${index}].picture`" :rules='rules.picture'>
        <el-upload
          v-if="!item.picture"
          action=""
          class="upload-btn"
          :on-success="(res) => handleSuccess(res, index)"
          :before-upload="handleImageVerify"
        >
          <i class="el-icon-plus icon"/>
        </el-upload>
        <div v-else>
          <div class="shadow-spec">
            <i class="el-icon-delete" @click.stop="handleRemoveImage(index)"/>
          </div>
          <img :src="item.picture" class="avatar"/>
        </div>
      </el-form-item>
      <el-form-item label="介绍">
        <el-input placeholder="请输入,限制200个字以内" v-model="item.introduce" type="textarea" maxlength="200" show-word-limit :rows="5"/>
      </el-form-item>
    </div>
  </el-form>
</template>

export default {
  data() {
    return {
      // 表单验证规则
      rules: {
        name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
        picture: [{ required: true, message: '请上传图片', trigger: 'blur' }],
      }
    }
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值