当前位置: 首页 > article >正文

Element 多个Form表单 同时验证

一、背景

在一个页面中需要实现两个Form表单,并在页面提交时需要对两个Form表单进行校验,两个表单都校验成功时才能提交

所用技术栈:Vue2+Element UI

二、实现效果

三、多个表单验证

注意项:

两个form表单,每个表单上都设置单独的model和ref,不能同时使用,否则每个表单上的校验提示会失效

<template>
  <div>
    <!-- 表单一区域 -->
    <el-form :inline="true" :model="form1Mode" class="demo-form-inline" ref="form1Ref" :rules="form1Rules">
      <el-form-item label="表单一" prop="user">
        <el-input v-model="form1Mode.user" placeholder="form1"></el-input>
      </el-form-item>
    </el-form>
    <!-- 表单二区域 -->
    <el-form :inline="true" :model="form2Mode" class="demo-form-inline" ref="form2Ref" :rules="form2Rules">
      <el-form-item label="表单二" prop="user">
        <el-input v-model="form2Mode.user" placeholder="form2"></el-input>
      </el-form-item>
    </el-form>
    <!-- 按钮提交区域 -->
    <div>
      <el-button type="primary" @click="onSubmit">确定</el-button>
      <el-button>取消</el-button>
    </div>
  </div>
</template>

3.1、方式一:依次对两个表单进行校验

<script>
export default {
  data() {
    return {
      form1Mode: {
        user: ''
      },
      form2Mode: {
        user: ''
      },
      form1Rules: {
        user: [{ required: true, message: '请输入form1', trigger: 'blur' }]
      },
      form2Rules: {
        user: [{ required: true, message: '请输入form2', trigger: 'blur' }]
      }
    }
  },
  methods: {
    //确定按钮
    async onSubmit() {
      try {
        await this.$refs.form1Ref.validate()
        console.log('表单1校验通过')
        await this.$refs.form2Ref.validate()
        console.log('表单2校验通过')
        //都校验成功之后,这里可以发请求
        this.$message.success('表单校验成功')
      } catch (error) {
        console.error('表单校验失败', error)
      }
    }
  }
}
</script>

3.2、方式二:两个表单同时校验------使用Promise.all

<script>
export default {
  data() {
    return {
      form1Mode: {
        user: ''
      },
      form2Mode: {
        user: ''
      },
      form1Rules: {
        user: [{ required: true, message: '请输入form1', trigger: 'blur' }]
      },
      form2Rules: {
        user: [{ required: true, message: '请输入form2', trigger: 'blur' }]
      }
    }
  },
  methods: {
    //封装验证函数
    submitForm(formUser) {
      return new Promise((resolve, reject) => {
        this.$refs[formUser].validate((valid) => {
          if (valid) {
            resolve()
          } else {
            reject(new Error('错误'))
          }
        })
      })
    },
    //确定按钮
    onSubmit() {
      Promise.all([this.submitForm('form1Ref'), this.submitForm('form2Ref')])
        .then(() => {
          //验证成功后在此处发请求
          this.$message.success('验证通过')
        })
        .catch(() => {
          this.$message.error('验证失败')
        })
    }
  }
}
</script>

http://www.kler.cn/a/108311.html

相关文章:

  • Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
  • C语言 | Leetcode C语言题解之第557题反转字符串中的单词III
  • 【练习案例】30个 CSS Javascript 加载器动画效果
  • 界面控件Kendo UI for Angular中文教程:如何构建带图表的仪表板?(一)
  • PHP搭建开发环境(Windows系统)
  • 使用支付宝沙箱完成商品下单
  • SpringCore完整学习教程7,入门级别
  • ubuntu 下载Python
  • WPS中图的自动编号及引用
  • 怎么从休学证明中取出休学原因(python自动化办公,涉及word和excel)
  • 精讲双向链表的销毁
  • 【算法|动态规划 | 01背包问题No.1】AcWing 426. 开心的金明
  • springboot 项目非docker 部署自动启动
  • 【教3妹学编程-java实战5】结构体字段赋值的几种方式
  • 推理还是背诵?通过反事实任务探索语言模型的能力和局限性
  • [双指针](一) Leetcode 283.移动零和1089.复写零
  • 2.MySQL的调控按钮——启动选项和系统变量
  • 什么是离岸金融 (OFFSHORE FINANCE)
  • 关于FTP的一些往事
  • Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第四章 C++多线程系统编程精要
  • 数据库简史:多主数据库架构的由来和华为参天引擎的机遇
  • [算法]求n!在m进制下末尾有多少个0
  • Redis(09)| Reactor模式
  • Vue 数据绑定 和 数据渲染
  • 分布式消息队列:RabbitMQ(1)
  • [ROS系列]ubuntu 20.04 从零配置orbslam3(无坑版)