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

elementui表单验证,数据层级过深验证失效

先看示例代码,代码为模拟动态获取表单数据,然后动态添加rules验证规则,示例表单内输入框绑定form内第四层:

<template><el-form :model="form" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"><el-form-item:label="'name'+index"v-for="(item,index) in 5":key="index":prop="'name' + index"><el-input v-model="form.data.top.nameList['name'+index]"></el-input></el-form-item><el-form-item><el-button type="primary" @click="submitForm">立即创建</el-button></el-form-item></el-form>
</template><script>
export default {data() {return {form: {data: {top: {nameList: {}}}},rules: {}};},created() {for (let i = 0; i < 5; i++) {this.rules["name" + i] = [{ required: true, message: "请输入活动名称", trigger: "blur" },{ min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }];}},methods: {submitForm() {console.log(this.rules)console.log(this.form)this.$refs.ruleForm.validate(valid => {if (valid) {console.log('验证通过');} else {return false;}});}}
};
</script>

效果如下:

可以看到验证规则已经绑定到了输入框,但验证规则却是失效的

点一下按钮看看表单内容和rules的内容,像是没问题的

想要实现验证,需要修改标签内prop属性与rules内属性名。改动如下

:prop="'name' + index" //原
:prop="'data.top.nameList.name' + index" //改后this.rules["name" + i] = [{ required: true, message: "请输入活动名称", trigger: "blur" },{ min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
]; //原this.rules["data.top.nameList.name" + i] = [{ required: true, message: "请输入活动名称", trigger: "blur" },{ min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
]; //改后

全部代码如下:

<template><el-form :model="form" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"><el-form-item:label="'name'+index"v-for="(item,index) in 5":key="index":prop="'data.top.nameList.name' + index" //修改了这里><el-input v-model="form.data.top.nameList['name'+index]"></el-input></el-form-item><el-form-item><el-button type="primary" @click="submitForm">立即创建</el-button></el-form-item></el-form>
</template><script>
export default {data() {return {form: {data: {top: {nameList: {}}}},rules: {}};},created() {for (let i = 0; i < 5; i++) {this.rules["data.top.nameList.name" + i] = [ //修改了这里{ required: true, message: "请输入活动名称", trigger: "blur" },{ min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }];}},methods: {submitForm() {console.log(this.rules)console.log(this.form)this.$refs.ruleForm.validate(valid => {if (valid) {console.log('验证通过');} else {return false;}});}}
};
</script>

 看一看功能:

点击按钮看一下表单和rules的内容:

总结:将prop绑定为form对象下直到要验证的数据,rules中属性名保证和prop相同。

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

相关文章:

  • 【Java】LinkedHashMap (LRU)淘汰缓存的使用
  • CancerGPT :基于大语言模型的罕见癌症药物对协同作用少样本预测研究
  • 《汽车维护与修理》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • tomcat状态一直是Exited (1)
  • 消息中间件的基础概念入门
  • 基于Web的宠物医院看诊系统设计与实现(源码+定制+开发)在线预约平台、宠物病历管理、医生诊疗记录、宠物健康数据分析 宠物就诊预约、病历管理与健康分析
  • Excel数据叠加生成新DataFrame:操作指南与案例
  • Web 开发入门之旅:从静态页面到全栈应用的第一步
  • WebSocket实现分布式的不同方案对比
  • 基于注意力机制的端到端合成语音检测
  • MySQL NaviCat 安装及配置教程(Windows)【安装】
  • 微信小程序:播放音频
  • Ubuntu安装K8S
  • 独立同分布时,联合概率密度函数等于边缘概率密度函数乘积
  • 半导体数据分析: 玩转WM-811K Wafermap 数据集(三) AI 机器学习
  • 【.net core】【sqlsugar】时间查询示例
  • Kotlin 协程基础十 —— 协作、互斥锁与共享变量
  • Java中网络编程的学习
  • [计算机网络]一. 计算机网络概论第一部分
  • 【0393】Postgres内核 checkpointer process ③ 构建 WAL records 工作缓存区
  • 正则表达式基础知识及grep、sed、awk常用命令
  • redhat安装docker 24.0.7
  • 【excel】VBA简介(Visual Basic for Applications)
  • 【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据...本篇介绍为什么self-attention可以堆叠多层,这有什么作用?
  • NanoKVM简单开箱测评和拆解,让普通电脑实现BMC/IPMI远程管理功能
  • 【Idea】编译Spring源码 read timeout 问题
  • VSCode的配置与使用(C/C++)
  • SpringMVC (1)
  • 本地部署大模型—MiniCPM-V 2.0: 具备领先OCR和理解能力的高效端侧多模态大模型
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 实现后台批量生成PDF文档