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

校验el-table中表单项

需求:

表格中每一行都有几个必填项,如用户提交时有未填的选项,将该选项标红且给出提示,类似el-form 的那种校验

el-table本身并没有校验的方法,而且每一行的输入框也是通过插槽来实现的,因此我们要自己跟el-table本身自带的属性来实现这个功能。接下来主角的登场
在这里插入图片描述
这个属性可以为每个单元格添加一个类名, 我的思路是

  1. 校验未通过的信息写在输入框的下方,通过display:none隐藏掉
  2. 在提交的时候先校验,如果存在必填项为空,则为该选项所存在的单元格添加一个“error-cell”的类名。
  3. 在此类名下的错误信息以及输入框边框变红通过已经写好的css来实现
    手下先做好准备工作
<el-table-column prop="age" label="年龄"><template slot-scope="{ row }"><el-input v-model="row.age" /><div class="tips">请输入年龄</div></template></el-table-column>
<el-table-column prop="backUp" label="年龄"><template slot-scope="{ row }"><el-input size="mini" type="textarea" v-model.trim="row.backUp" /><div class="tips">请输入备注</div></template>
</el-table-column>
.tips {display: none; font-size: 12px;
}

提交时进行校验

// 校验表格  是否存在未填选项
var _validate = this.tableData.some((item) => !item.age || !item.backUp );
//存在未填选项  将该选项加上校验未通过类名 同时return禁止提交
if (_validate) {this.cellClass = ({ row, columnIndex }) => {if ((row.age === '' && columnIndex === 0) ||(row.backUp === '' && columnIndex === 1)) {return 'error-cell';}};return;
}

校验未通过的 展示错误信息

.error-cell {.el-input__inner {border-color: #f56c6c;}.tips {display: block;color: #f56c6c;}
}

附上完整代码

<template><div class="page"><el-table :data="tableData" :cell-class-name="cellClass"><el-table-column prop="age" label="年龄"><template slot-scope="{ row }"><el-input v-model="row.age" /><div class="tips">请输入年龄</div></template></el-table-column><el-table-column prop="backUp" label="年龄"><template slot-scope="{ row }"><el-input size="mini" type="textarea" v-model.trim="row.backUp" /><div class="tips">请输入备注</div></template></el-table-column></el-table><el-button @click="submit">提交</el-button></div>
</template><script>
export default {data() {return {tableData: [{ age: '1', backUp: '2' },{ age: '1', backUp: '1' },{ age: '', backUp: '1' }],cellClass: null};},methods: {submit() {// 校验表格  是否存在未填选项var _validate = this.tableData.some(item => !item.age || !item.backUp);//存在未填选项  将该选项加上校验未通过类名 同时return禁止提交if (_validate) {this.cellClass = ({ row, columnIndex }) => {if ((row.age === '' && columnIndex === 0) || (row.backUp === '' && columnIndex === 1)) {return 'error-cell';}};return;}//校验通过console.log('校验通过');}}
};
</script><style lang="scss" scoped>
::v-deep.page {.tips {display: none;font-size: 12px;}.error-cell {.el-input__inner {border-color: #f56c6c !important;}.tips {display: block;color: #f56c6c;}}
}
</style>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Flink实时开发添加水印的案例分析
  • 【Qt】之【Bug】error:C1083 无法打开包括文件
  • 第七章 单片机的串行口
  • 小程序为什么要做分包处理
  • [Unity]碰撞器的接触捕获层详解
  • springboot 重新注册 bean
  • 【C语言】全面解析冒泡排序
  • vscode通过ssh链接远程服务器上的docker
  • 基于深度学习的车距检测系统
  • vi 编辑器快捷生成 main 函数和基本框架
  • python的readline()和readlines()
  • Hadoop基础组件介绍!
  • 【Git】Git Submodules 介绍(通俗易懂,总结了工作完全够用的 submodule 命令)
  • 签名优化:请求数据类型不是`application/json`,将只对随机数进行签名计算,例如文件上传接口。
  • 网络编程-TCP 协议的三次握手和四次挥手做了什么
  • JS 中的深拷贝与浅拷贝
  • Angular 响应式表单之下拉框
  • Docker容器管理
  • E-HPC支持多队列管理和自动伸缩
  • JAVA并发编程--1.基础概念
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • PHP 小技巧
  • React Transition Group -- Transition 组件
  • vue:响应原理
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • Zepto.js源码学习之二
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 微服务框架lagom
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​ubuntu下安装kvm虚拟机
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • #if 1...#endif
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1)虚拟机的安装与使用,linux系统安装
  • (4)事件处理——(7)简单事件(Simple events)
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET单元测试
  • .net中生成excel后调整宽度
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @RequestMapping处理请求异常
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法