Element循环生成的表单如何添加校验规则

数据结构

let ruleForm = ref({
  List: [
    {
      deviceName: "", //设备名称
      tagName: "" //标签名称
    }
  ],
  remark: "" //备注
}); //表单参数

表单校验规则

const rules = {
  deviceName: [
    { required: true, message: "请选择设备名称", trigger: "change" }
  ],
  tagName: [{ required: true, message: "请选择标签名称", trigger: "change" }],
  remark: [{ required: true, message: "请输入备注", trigger: "change" }]
}; //表单校验规则

页面结构

<template>
  <div>
    <el-form
      ref="ruleFormRef"
      :model="ruleForm"
      :rules="rules"
      label-width="120px"
    >
      <!-- 需要循环的表单 -->
      <div v-for="(item, index) in ruleForm.List" :key="index">
        <el-form-item
          label="设备名称"
          :prop="'List.' + index + '.deviceName'"
          :rules="rules.deviceName"
        >
          <el-input v-model="item.deviceName" placeholder="请输入设备名称"
        /></el-form-item>
        <el-form-item
          label="标签名称"
          :prop="'List.' + index + '.tagName'"
          :rules="rules.tagName"
        >
          <el-input v-model="item.tagName" placeholder="请输入标签名称"
        /></el-form-item>
      </div>
      <!-- 无需循环的表单 -->
      <el-form-item label="备注" prop="remark">
        <el-input
          v-model="ruleForm.remark"
          type="textarea"
          placeholder="请输入备注"
        />
      </el-form-item>
    </el-form>
  </div>
</template>

 

重点

在el-form-item标签上按照以下结构添加

 :prop="'List.' + index + '.deviceName'"
 :rules="rules.deviceName"

 

posted @ 2023-07-06 14:27  小呀小恐龙  阅读(133)  评论(0)    收藏  举报