vue+elementui form多表单校验

vue+elementui,使用form表单时,有时需要用到多表单一起验证,待都校验通过后再执行后续动作。

解决方法:先对每一个表单进行校验,返回一个promise对象,然后使用Promise.all方法对所有返回的promise对象判断,全部是fulfilled的时候执行后续逻辑。代码如下:

<template>
  <div>
    <el-form
      ref="form1"
      :model="form1" 
      :rules="rules1" 
    >
      <el-form-item label="标题" prop="title1">
        <el-input
          v-model="form1.title1"
          placeholder="请输入标题"
        />
      </el-form-item>
      <el-form-item label="内容" prop="content1">
        <el-input
          v-model="form1.content1" 
          type="textarea"
          resize="none"
          placeholder="请输入内容"
        />
      </el-form-item>
    </el-form>
    <el-form
      ref="form2"
      :model="form2" 
      :rules="rules2" 
    >
      <el-form-item label="标题" prop="title2">
        <el-input
          v-model="form2.title2"
          placeholder="请输入标题"
        />
      </el-form-item>
      <el-form-item label="内容" prop="content2">
        <el-input
          v-model="form2.content2" 
          type="textarea"
          resize="none"
          placeholder="请输入内容"
        />
      </el-form-item>
    </el-form>
    <el-button
      type="primary"
      @click="submitForm"
    >提交</el-button>
  </div>
</template>

<script>

export default {

  data() {
    return {
      form1: {},
      form2: {},
      // 表单校验
      rules1: {
        title1: [
          { required: true, message: "标题不能为空", trigger: "blur" }
        ],
        content1: [
          { required: true, message: "请输入内容", trigger: "blur" }
        ]
      },
      rules2: {
        title2: [
          { required: true, message: "标题不能为空", trigger: "blur" }
        ],
        content2: [
          { required: true, message: "请输入内容", trigger: "blur" }
        ]
      },
    }
  },
  methods: {
    /** 提交按钮 */
    submitForm() {
      let formValidates = [
        this.$refs["form1"].validate(),
        this.$refs["form2"].validate(),
      ]
      Promise.all(formValidates).then(() => {
        // TODO
        // 校验通过后的逻辑
      })
      
    }
  }
}
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值