vue v-for form在element中如何校验

直接上例子:

第一种:验证方法带循环

<template>
  <div>
    <div v-for="(item,index) in datas.realForm" :key="index">

      <el-form ref="form" :model="datas" label-width="160px" :rules="rules">
        <el-form-item label="名字" :rules="rules.name" :prop="`realForm.${index}.name`">
          <el-input v-model="item.name" placeholder="名字"></el-input>
        </el-form-item>
        <el-form-item label="年龄">
          <el-input v-model="item.age" placeholder="年龄"></el-input>
        </el-form-item>
      </el-form>

    </div>

    <el-button @click="submit">保存</el-button>

  </div>
</template>
<script>

export default {
  name: "test",
  data() {
    return {
      datas:{
        realForm:[
          {
            name:'',
            age:12,
          },
          {
            name:'',
            age:11,
          },
        ]
      },
      rules:{
        name:[{required: true, message: '请输入名字', trigger: 'blur' }]
      }
    }
  },
  methods: {
    submit(){
      this.datas.realForm.forEach((item, index)=>{
        this.$refs.form[index].validate((valid)=>{
          if(valid){
            alert('提交成功')
          }
        })
      })
    },
    resetForm(formName) {
      this.$refs[formName].resetFields();
    }
  }
}
</script>
<style>
</style>

第二种:验证方法带循环

<template>
  <div>
    <div v-for="(item,index) in datas.realForm" :key="index">

      <el-form ref="form" :model="datas" label-width="160px">
        <el-form-item label="名字" :prop="`realForm.${index}.name`" :rules="[
                                   { required: true, message: '名字', trigger: 'blur' }
                                ]">
          <el-input v-model="item.name" placeholder="名字"></el-input>
        </el-form-item>
        <el-form-item label="年龄">
          <el-input v-model="item.age" placeholder="年龄"></el-input>
        </el-form-item>
      </el-form>
    </div>

    <el-button @click="submit">保存</el-button>

  </div>
</template>
<script>

export default {
  name: "test",
  data() {
    return {
      datas:{
        realForm:[
          {
            name:'',
            age:12,
          },
          {
            name:'',
            age:11,
          },
        ]
      }
    }
  },
  methods: {
    submit(index){
      this.datas.realForm.forEach((item, index)=>{
        this.$refs.form[index].validate((valid)=>{
          if(valid){
            alert('提交成功')
          }
        })
      })
    },
    resetForm(formName) {
      this.$refs[formName].resetFields();
    }
  }
}
</script>
<style>
</style>

第三种:验证方法没有循环

<template>
  <div>
    <el-form ref="form" :model="datas">
      <template v-for="(item,index) in datas.subItemObjList">
        <el-form-item label="项目编号" :prop="`subItemObjList.${index}.projectId`">
          <el-input v-model="item.projectId" :disabled="true"/>
        </el-form-item>
        <el-form-item label="项目名称" :prop="`subItemObjList.${index}.projectName`">
          <el-input v-model="item.projectName" :disabled="true"/>
        </el-form-item>
        <el-form-item label="项目负责人" :prop="`subItemObjList.${index}.projectLeaders`" :rules="[
                                   { required: true, message: '请选择项目负责人', trigger: 'change' }
                                ]">
          <el-input v-model="item.projectLeaders"
                    placeholder="请选择"/>
        </el-form-item>
        <el-form-item label="项目执行单位" :prop="`subItemObjList.${index}.projectExeCompany`" :rules="[
                                  {required: true, message: '请选择项目执行单位', trigger: 'change'}
                                ]">
          <el-select v-model="item.projectExeCompany" clearable filterable
                     placeholder="选择项目执行单位">

          </el-select>
        </el-form-item>
      </template>
    </el-form>
    <el-button
      class="newAdd"
      type="primary"
      @click="submitForm"
      style="width:100px;height:36px;"
    >保存
    </el-button>
  </div>
</template>
<script>

export default {
  name: "test",
  data() {
    return {
      datas: {
        subItemObjList: [{
          projectSubNumId: 0,
          projectId: '',
          projectSid: this.$route.query.projectSid,
          projectCode: '',
          projectName: '',
          projectLeader: '',
          projectLeaderId: '',
          projectLeaders: '',
          projectExeCompany: null,
          projectExeDept: '',
          performanceCompany: '',
          performanceDept: '',
          subProportion: '',
          subMoney: '',
          segmentationBasis: '',
          projectCodeMain: '',
          remarks: ''
        }]
      }
    };
  },
  methods: {
    submitForm() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          alert('submit!');
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
    resetForm(formName) {
      this.$refs[formName].resetFields();
    }
  }
}
</script>
<style>
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值