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

vue+elementUI实现在表格中添加输入框并校验的功能

背景:

vue2+elmui

需求:

需要在一个table中添加若干个输入框,并且在提交时需要添加校验

思路:

  1. 当需要校验的时候可以考虑添加form表单来触发校验,因此需要在table外面套一层form表单,表单的属性就是ref,model,rules三件套,ref来获取组件实例validate从而进行校验,model为绑定的数据,rules为对应规则。
  2. 在每一个input外面套一层form-item,并且添加对应的校验规则
  3. 通过计算属性提炼出需要绑定的数据
  4. 设置校验函数,在进行提交时调用该方法,获取这个方法的返回值,若是false则return,否则进行后续的代码逻辑

实现代码:

    <el-form ref="formRef" :model="validateForm" :rules="rules"><el-table :data="validateForm.tableData" border height="300"><el-table-column label="安全最低温" property="tempMin"><template slot-scope="scope"><el-form-item :prop="'tableData.' + scope.$index + '.tempMin'" :rules="rules.tempMin"><el-input v-model="scope.row.tempMin" placeholder="请填写安全最低温" size="small" /></el-form-item></template></el-table-column><el-table-column label="安全最高温" property="tempMax"><template slot-scope="scope"><el-form-item :prop="'tableData.' + scope.$index + '.tempMax'" :rules="rules.tempMax"><el-input v-model="scope.row.tempMax" placeholder="请填写安全最高温" size="small" /></el-form-item></template></el-table-column><el-table-column label="温度预警区间" property="tempWarningVal"><template slot-scope="scope"><el-form-item :prop="'tableData.' + scope.$index + '.tempWarningVal'" :rules="rules.tempWarningVal"><el-input v-model="scope.row.tempWarningVal" placeholder="请填写预警" size="small" /></el-form-item></template></el-table-column><el-table-column label="安全湿度上限" property="humidityMax"><template slot-scope="scope"><el-form-item :prop="'tableData.' + scope.$index + '.humidityMax'" :rules="rules.humidityMax"><el-input v-model="scope.row.humidityMax" placeholder="请填写安全最低温" size="small" /></el-form-item></template></el-table-column><el-table-column label="安全湿度下限" property="humidityMin"><template slot-scope="scope"><el-form-item :prop="'tableData.' + scope.$index + '.humidityMin'" :rules="rules.humidityMin"><el-input v-model="scope.row.humidityMin" placeholder="请填写安全最高温" size="small" /></el-form-item></template></el-table-column><el-table-column label="湿度预警区间" property="humidityWarningVal"><template slot-scope="scope"><el-form-item :prop="'tableData.' + scope.$index + '.humidityWarningVal'" :rules="rules.humidityWarningVal"><el-input v-model="scope.row.humidityWarningVal" placeholder="请填写安全最低温" size="small" /></el-form-item></template></el-table-column></el-table></el-form>computed: {
// 通过计算属性来得出table绑定的数据validateForm() {const validateForm = {}const dataArr = this.gridData.map((item, index) => {item.index = indexreturn item})const tempList = dataArr.filter(item => item.outSiteCode === this.outSiteSelect)validateForm.tableData = tempListreturn validateForm}},rules: {
// 设置校验规则tempMin: [{ required: true, message: '', trigger: ['blur', 'change'] }],tempMax: [{ required: true, message: '', trigger: ['blur', 'change'] }],tempWarningVal: [{ required: true, message: '', trigger: ['blur', 'change'] }],humidityMax: [{ required: true, message: '', trigger: ['blur', 'change'] }],humidityMin: [{ required: true, message: '', trigger: ['blur', 'change'] }],humidityWarningVal: [{ required: true, message: '', trigger: ['blur', 'change'] }]},/*校验函数,通过设置flag来校验每一项,如果没填写就是false,并且返回*/validateTable() {let flag = falsethis.$refs.formRef.validate((valid) => {if (!valid) flag = falseelse { flag = true }})return flag},/*提交函数,提交表单前,进行校验,没通过就return*/handleFormChange() {const validateFlag = this.validateTable()if (!validateFlag) return
// ...后续的提交表单逻辑
}

最终效果:

http://www.lryc.cn/news/372564.html

相关文章:

  • 为国产加油:“缺芯少屏”暂缓,另一领域,也要加把劲
  • 【Qnx】Qnx coredump解析
  • 超级签名源码/超级签/ios分发/签名端本地linux服务器完成签名
  • RocketMQ在Centos7系统上单机部署
  • Vue37-非单文件组件
  • CSS实现经典打字小游戏《生死时速》
  • 推箱子-小游戏
  • AI数字人的开源解决方案
  • java写一个验证码
  • 【星海随笔】ELK优化
  • SQL Auto Increment
  • 网络安全练气篇——PHP编程语言基础
  • LabVIEW程序内存泄漏分析与解决方案
  • JVM垃圾回收器介绍
  • subprocess隐藏cmd窗口
  • 编程前端看什么书比较好:深入解析与推荐
  • HarmonyOS(36) DevEco Studio 配置debug和release
  • PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)复现
  • WHAT - React 学习系列(二)
  • Java 反射机制 -- Java 语言反射的概述、核心类与高级应用
  • 【Python入门与进阶】Jupyter Notebook配置与优化
  • DataCap 自定义 File 转换器
  • ARM32开发--IIC原理
  • 列表、集合、字典的相关练习
  • 填报志愿选大学专业,文科生如何选专业?
  • 如何实现跨域
  • 从零开始利用树莓派+扬声器,实现简单的蓝牙音箱,手机连接放歌
  • 今年的就业环境不容乐观,你想好怎么应对了吗
  • 测试 halcon measure_projection 算子
  • 网络安全岗位必须知道到:高性能抓取,多线程,异步逆向分析(Js逆向破解/APP逆向破解)反爬原理和解决方法,不然你的Python会有Bug