Vue3使用el-form嵌套el-table进行单条数据的表单校验功能

 更新时间:2024年08月22日 10:49:42   作者:前端学步  
在实际开发过程中,我们经常需要处理表格中的表单数据,比如在编辑表格中的某一行数据时进行校验,本文给大家介绍了Vue3使用el-form嵌套el-table进行单条数据的表单校验功能,文中有相关的代码供大家参考,需要的朋友可以参考下

概述

在实际开发过程中,我们经常需要处理表格中的表单数据,比如在编辑表格中的某一行数据时进行校验。本文将介绍如何在 Vue3 和 Element Plus 中实现这一功能。

示例代码

<template>
  <div>
    <el-form ref="formRef" :model="formObj" :rules="rules">
      <el-table :data="formObj.list">
        <el-table-column label="名称" align="center">
          <template #default="scope">
            <el-form-item
              :prop="'list.' + scope.$index + '.name'"
              :rules="[
                { required: true, message: '名称不能为空', trigger: 'blur' },
              ]"
            >
              <el-input v-model="scope.row.name" />
            </el-form-item>
            <el-form-item
              :prop="'list.' + scope.$index + '.desc'"
              :rules="[
                { required: true, message: '描述不能为空', trigger: 'blur' },
              ]"
            >
              <el-input v-model="scope.row.desc" />
            </el-form-item>
          </template>
        </el-table-column>
      </el-table>
    </el-form>
  </div>
</template>
 
<script setup>
import { ref } from 'vue';
 
let formObj = ref({
  list: [
    {
      name: '',
      desc: ''
    }
  ],
});
 
const formRef = ref(null);
 
const rules = {
  // 这里不需要单独定义规则,因为已经在模板中指定了
};
 
// 提交表单
const submitForm = () => {
  formRef.value.validate((valid) => {
    if (valid) {
      console.log('表单提交成功');
      // 进行表单提交逻辑
    } else {
      console.log('表单验证失败');
      return false;
    }
  });
};
</script>
 
<style>
</style>

分析

1. 定义表单数据

在这个例子中,我们使用了一个名为 formObj 的响应式对象来存储表格的数据。formObj 包含一个名为 list 的数组,数组中的每个元素都代表表格中的一行。

let formObj = ref({
  list: [
    {
      name: '',
      desc: ''
    }
  ],
});

2. 表单和表格的结合

在模板中,我们使用 <el-form> 组件包裹整个表格,并将 formObj 作为 model 传入。这意味着整个表单将与 formObj 的数据绑定在一起。

<el-form ref="formRef" :model="formObj" :rules="rules">
  <el-table :data="formObj.list">
    <!-- 表格列内容 -->
  </el-table>
</el-form>

3. 单条数据的校验

为了实现每一条数据的独立校验,我们需要在 <el-form-item> 中指定 prop 属性。这里我们使用模板字符串动态生成 prop 的值,使其能够指向表格中特定行的特定字段。

<el-form-item
  :prop="'list.' + scope.$index + '.name'"
  :rules="[
    { required: true, message: '名称不能为空', trigger: 'blur' },
  ]"
>
  <el-input v-model="scope.row.name" />
</el-form-item>

4. 提交表单

当用户点击提交按钮时,我们可以通过调用 <el-form> 的 validate 方法来触发表单验证。

const submitForm = () => {
  formRef.value.validate((valid) => {
    if (valid) {
      console.log('表单提交成功');
      // 进行表单提交逻辑
    } else {
      console.log('表单验证失败');
      return false;
    }
  });
};

总结

通过上述方法,我们可以实现在 Vue3 中使用 Element Plus 的 <el-form> 组件嵌套 <el-table> 进行单条数据的表单校验。这在实际项目中非常有用,尤其是需要用户输入大量数据并进行实时验证的场景下。

到此这篇关于Vue3使用el-form嵌套el-table进行单条数据的表单校验功能的文章就介绍到这了,更多相关Vue3 el-form嵌套el-table表单校验内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Vue 撸一个指令实现拖拽功能

    基于Vue 撸一个指令实现拖拽功能

    这篇文章主要介绍了Vue 指令实现拖拽功能,实现原理很简单,文中通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Vue3 核心特性Suspense 与 Teleport 原理解析

    Vue3 核心特性Suspense 与 Teleport 原理解析

    本文详细解析了Vue3的核心特性Suspense和Teleport,包括它们的实现原理、核心源码、生命周期流程、依赖追踪机制等,通过深入理解这两个API的设计哲学,开发者可以提升代码组织能力、优化应用性能和实现更优雅的架构设计,感兴趣的朋友一起看看吧
    2025-03-03
  • Vue props传入function时的this指向问题解读

    Vue props传入function时的this指向问题解读

    这篇文章主要介绍了Vue props传入function时的this指向问题解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • vue3在构建时使用魔法糖语法时defineProps和defineEmits的注意事项小结

    vue3在构建时使用魔法糖语法时defineProps和defineEmits的注意事项小结

    在 Vue 3.2+ 版本中,可以使用 <script setup> 替代传统的 script标签来编写组件,它提供了更简洁的语法来编写 Composition API 代码,这篇文章主要介绍了vue3在构建时使用魔法糖语法时defineProps和defineEmits的注意事项小结,需要的朋友可以参考下
    2024-04-04
  • vue-cli构建的项目如何手动添加eslint配置

    vue-cli构建的项目如何手动添加eslint配置

    这篇文章主要介绍了vue-cli构建的项目如何手动添加eslint配置,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue类名如何获取动态生成的元素

    vue类名如何获取动态生成的元素

    这篇文章主要介绍了vue类名如何获取动态生成的元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 如何理解Vue的render函数的具体用法

    如何理解Vue的render函数的具体用法

    本篇文章主要介绍了如何理解Vue的render函数的具体用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • vue +elementui 导入CSV文件的方式

    vue +elementui 导入CSV文件的方式

    封装一个公共js方法,使用papaparse解析CSV文件且返回数组格式,下面通过示例代码介绍vue +elementui 导入CSV文件的方式,感兴趣的朋友一起看看吧
    2024-04-04
  • 深入了解Vue中单向数据流的原理与管理

    深入了解Vue中单向数据流的原理与管理

    在Vue中,数据流是指数据的传递和管理方式,而Vue采用的是单向数据流,所以这篇文章就来就来和大家讲讲什么是Vue的数据流以及如何进行数据流管理,感兴趣的可以了解一下
    2023-06-06
  • vue中require与import的区别详解

    vue中require与import的区别详解

    这篇文章主要介绍了vue中require与import的区别详解,require相当于module.exports的传送门,module.exports后面的内容是什么,require的结果就是什么,对象、数字、字符串、函数,再把require的结果赋值给某个变量,需要的朋友可以参考下
    2023-10-10

最新评论