element-UI框架下对v-for循环生成的表单项进行校验

element表单中一个el-form-item下多个form-item项校验(循环校验) 在vue+elementUI的项目中,需要对form表单下的一个form item中校验多项数据,如下图: 代码实现(需要注意prop的值): <template> <el-form :model="form" ref="ruleForm" label-width="100px"> <el-form-item label="负责人" prop="principal" :rules="rules.principal"> <el-input v 阅读详情

 需求比较简单就是验证一个表单,但是表单的项目是一个数组,每一个输入框都是v-for动态绑定的,其实和一个稳定的表单校验大部分要注意的点是一样的,只是一个问题prop的取值如何取比较复杂。

数据结构是这样的,routeTable中有俩个数组结构的子对象,而俩个数组中的元素结构又是一样的,而且业务逻辑也一样,所以将这两个数组分别传递给同一种子组件,并传递了key的句柄url-type。


routeTable = {
serviceUrl: [{
  id: 1,
  weight: 1,
  url: 'http://'
}],
subscribeUrl: [{
  id: 1,
  weight: 1,
  url: 'http://'
}]
}

调用子组件及向子组件传值,


<el-divider content-position="left">
  <el-checkbox :checked="true" :disabled="true">
	<span style="color: #0c93ff">业务地址列表</span>
  </el-checkbox>
</el-divider>
<centring-appkey-route-url 
	ref="service" 
	:route-table="centringForm.routeTable" 
	:modifiable="modifiable" 
	url-type="serviceUrl" 
	@delRouteUrl="delRouteUrl"/>

<el-divider content-position="left">
  <el-checkbox :checked="true" :disabled="true">
	<span style="color: #0c93ff">订阅地址列表</span>
  </el-checkbox>
</el-divider>
<centring-appkey-route-url 
	ref="subscribe" 
	:route-table="centringForm.routeTable" 
	:modifiable="modifiable" 
	url-type="subscribeUrl" 
	@delRouteUrl="delRouteUrl"/>

子组件代码

<template>
  <div>
    <el-form ref="routeUrlForm" :model="routeTable" size="mini" inline label-width="60px">
      <div v-for="(item, index) in routeTable[urlType+'']" :key="index">
        <el-row>
          <el-col :span="4">
            <el-form-item label="id" required>
              <el-input :disabled="true" v-model="item.id" size="mini" style="width: 50px;"/>
            </el-form-item>
          </el-col>
          <el-col :span="10">
            <el-form-item :prop="urlType + '.' +index + '.url'" :rules="routeUrlRules.url" label="url">
              <el-input :disabled="!modifiable" v-model="item.url" size="mini" style="width: 260px;"/>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="权重" required>
              <el-input-number :disabled="!modifiable" v-model="item.weight" :min="1" size="mini" style="width: 80px;"/>
            </el-form-item>
          </el-col>
          <el-col :span="4">
            <el-button v-if="modifiable && routeTable.serviceUrl.length - 1 == index" type="primary" size="mini" @click="addUrl">添加</el-button>
            <el-button v-if="modifiable && routeTable.serviceUrl.length > 1" size="mini" type="danger" @click="deleteUrl(index)">删除</el-button>
          </el-col>
        </el-row>
      </div>
    </el-form>
  </div>
</template>

<script>
export default {
  name: 'CentringAppkeyRouteUrl',
  // eslint-disable-next-line vue/require-prop-types
  props: ['routeTable', 'urlType', 'modifiable'],
  data() {
    var checkUrl = (rule, value, callback) => {
      console.log(value)
      // eslint-disable-next-line eqeqeq
      if (value != null && value != '') {
        var partten = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/
        if (partten.test(value)) {
          callback()
        } else {
          callback(new Error('请输入正确的url'))
        }
      } else {
        callback(new Error('请输入url'))
      }
    }
    return {
      routeUrlRules: {
        url: [{ validator: checkUrl, trigger: 'blur' }]
      }
    }
  },
  methods: {
    // 删除按钮
    deleteUrl(index) {
      // eslint-disable-next-line eqeqeq
      if (this.routeTable[this.urlType + ''][index].is_new == true) { // 是新加的,直接删
        this.routeTable[this.urlType + ''].splice(index, 1)
      } else { // 是已编排过的,删之前要判断是不是最后一个
        var cnt = 0
        this.routeTable[this.urlType + ''].forEach(item => { // 统计原有url个数
          // eslint-disable-next-line eqeqeq
          if (item.is_new != true) {
            cnt += 1
          }
        })
        if (cnt <= 1) {
          this.$message.error('最后一个不可删除!') // 是最后一个,不做操作
        } else {
          this.$emit('delRouteUrl', { urlType: this.urlType, routeUrl: this.routeTable[urlType + ''][index] })
        }
      }
    },
    // 添加按钮
    addUrl() {
      var nextId = 0
      this.routeTable[this.urlType + ''].forEach(item => { // 找最大id
        if (item.id >= nextId) {
          nextId = Number(item.id) + 1
        }
      })
      this.routeTable[this.urlType + ''].push({
        id: nextId,
        weight: 1,
        url: 'http://',
        is_new: true // 手动添加标记
      })
    },
    validate() {
      this.$refs.routeTable[this.urlType + ''].Form.validate((valid) => {
        alert(valid)
      })
    }
  }
}
</script>

<style scoped>

</style>

其中要注意的有:

1.rules相关数据与一般的校验都一样

2.el-form中的model必须是一个Object类型,所以传递了routeTable这个对象。不带model参数整个表单都不会启动校验的。

3.最关键也是最复杂的prop的值定位,这个值是以model为根找起,我要找url就必须先找到他所在的数组,然后是数组的下标,最后定位到url,每一层级使用"."分隔开,最终就成了如下所示的写法。

:prop="urlType + '.' +index + '.url'"

 

 

验证 helm Chart 的正确性 阅读详情

相关推荐

永磁同步电机控制笔记:foc控制原理通俗讲义

引言 到此为止,永磁同步电机控制相关文章已经写了7篇,其中simulink仿真系列文章5篇,控制笔记系列文章2篇,恍惚间感觉少了一篇概论,在此插入一篇,也算是对入坑电机控制一年半来的知识梳理。 文章目录引言一、同步电机是怎么转起来的二、什么样的旋转磁场效率最高三、怎么精准控制旋转磁场的方向四、怎样调节dq轴电流 一、同步电机是怎么转起来的 永磁同步电机结构如下: 外围是定子绕组,中间为永磁体,设...

搞电机的博客 2万+

v-for循环 form表单 validate 验证

<template> <div class="driverPermit"> <div v-for="(item,index) in datas.realForm" :key="index"> <el-form ref="form" :model="datas" label-width="16...

qq_40685103的博客 3044

CTP高频Tick数据:五档期货Level2深度解析20241224

高频Tick五档期货Level2数据,作为一种先进的金融市场分析工具,以其一秒四次的高频更新,为投资者揭示了市场的微观结构。本文将深入探讨这一数据如何帮助投资者洞察市场动态,优化交易策略,实现投资收益的最大化。

level2Tick的博客 1218

vue table+v-for双循环表单验证

刚开始使用el-table 循环后 里面有个子集,需要再次循环 就采用 v-for 这个时候我写了两个form 表单 一个是包裹了 el-table 另外一个是 在el-table 内部 也就是包裹了v-for(那时候不知道为什么这么写,傻了傻了,本可以共用一个的) 在el-table 的表单验证是效果是正常的 在内部的v-for 验证就出问题了 我创建了一个对象 modelTable , 第一个table 用的是 modelTable.behaviorReqList modelTab..

qq_42230395的博客 2287

COMSOL实战:如何用有限元法(FEM)准确仿真电磁场问题?避坑指南

本文是一份COMSOL电磁场仿真实战指南,重点讲解如何运用有限元法(FEM)准确模拟电磁场问题。文章通过矩形波导和偶极子天线两大经典案例,详细剖析了从几何建模、物理场设置、网格剖分到结果验证的全流程,并提供了处理非线性材料、求解器收敛失败等高级问题的避坑技巧,旨在帮助工程师建立可靠的仿真工作流。

weixin_29297127的博客 514

自动驾驶系统架构解析:从传感器到决策控制的完整链路(附实际案例)

本文深入解析了自动驾驶系统从感知、决策到控制的完整架构链路。通过对比摄像头、毫米波雷达、激光雷达等核心传感器的特性与选型策略,阐述了多传感器融合的必要性。文章结合行为决策、运动规划及控制执行的实际案例,揭示了系统集成、数据闭环与功能安全等工程化落地的关键挑战,为理解自动驾驶技术提供了清晰的蓝图。

weixin_29051811的博客 339

v-for 循环生成多个表单元素 给动态生成的表单元素绑定值并且添加校验规则

需求:点击新增按钮 能不断生成下级部门,所以我再data中定义了一个变量 subordinateDepartmentNum:0 默认值设置为0 给增加按钮添加点击事件 每点击一次按钮subordinateDepartmentNum加1 // 新增下级部门 addDepartment() { this.subordinateDepartmentNum++; }, 通过v-for循环生成表单 这样就可以生成多个下级部门的表单元素 <div class="ad...

workhard0905的博客 8166

用户和实体行为分析(UEBA)基础指南及解决方案

用户和实体行为分析(UEBA)或异常检测是一种网络安全技术,它使用机器学习(ML)算法来检测网络中用户、主机和其他实体的异常活动。

ITmoster的博客 2893

element v-for循环列表的表单校验(动态绑定的数据)

1、一层循环时嵌套: html: <el-form :model="addform" ref="addform" :rules="rules"> <el-form-item label="资源" required label-width="120px"> <el-row v-for="(item,i) in addform.resourceList" :key="i"> <el-col :span="10">

小猪的博客 4536

Java使用easyExcel生成excel文件直接写入邮件附件并发送

1.引入pom依赖 <!-- email --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> <!-- easyexcel需要依赖poi jar包 --> <depe

weixin_50493320的博客 3911

三峡大学-微机原理与接口技术实验

其中,A15接E1,因此,A15为1,A14A13A12A11A10A9A8A7通过八输入与非门74LS30与E2连接,因此A14A13A12A11A10A9A8A7为11111111,A6A5A4与CBA连接,因此A6A5A4为101,A3A2A1A0不参与译码,因此IO5的地址范围为1111 1111 1101 0000B~1111 1111 1101 1111B,即0FFD0H~0FFDFH。如图1所示,若IO0输出为低电平,则需要E1接高电平,E2接低电平,E3接低电平,CBA的输入为000。

m0_62222486的博客 497

Vue组件中通过v-for循环动态生成form表单进行表单校验

在做项目时,需要根据需要动态添加或新增表单,同时还需要对表单做校验。详情如下图: 刚开始做表单验证的时候,对于这个动态的表单验证有点难搞,试了好几种方法都没有搞定。最后按照下面这种方法实现了,以此篇博客留作记录,方便下次遇到类似的需求时直接开发。 <a-form :model="warnData" ref="warnDataRef" :rules="rules" :label-col="labelCol"> <div class="title"> <strong&

二三的博客 9724

基于STM32单片机设计的智能水温控制系统

本项目研究并实现了一种基于STM32单片机的智能水温控制系统。系统以STM32F103RCT6作为主控制器,通过DS18B20温度传感器实时采集水温数据,利用PID控制算法精确调节5V直流防水型70W加热棒的功率输出,确保水温恒定在设定范围内。此外,采用OLED显示屏显示当前水温和预设上限阀值,并集成ESP8266-WiFi模块与自研Android手机APP进行远程通信和控制。用户可通过本地按键或手机APP设置温度阀值,实现实时监控与智能化管理。整个系统设计旨在提高水资源利用效率,提升生活及工业用水环境的舒

8792

Element UI表单循环校验实战:如何优雅处理动态增减表单项的验证问题

本文深入探讨了Element UI动态表单循环校验的实战技巧。针对动态增减表单项场景,核心在于正确理解并应用`prop`路径绑定机制,确保校验器能准确找到数组中的对应数据。文章详细解析了静态与动态绑定的本质区别,并提供了可维护的校验规则管理策略,包括规则复用、异步校验及交叉验证的实现方法。最后,通过封装可复用组件的高级实践,展示了如何优雅地解决企业级应用中的动态表单验证难题。

dream的博客 907

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

element ui使用v-for循环form表单校验的实现

<template> <el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="120px" class="demo-dynamic"> <el-row v-for="(domain, index) in dynamicValidateForm.pe...

qq_35859392的博客 6790

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

(element-ui)v-for动态数据循环表单验证的处理方式

1.功能需求:使用element的表单验证方式,动态for循环的场景如何使用?如下图所示: 2.dom结构如下(重点) 注意: 1. userList和其他表单项在同一个form表单中 2.prop改为:prop,形式为'userList.'+index+'.name' 3.每一个循环中的<el-form-item>都需要加:rules <el-form :m...

jinxi1112的博客 1万+

element ui 中循环列表的表单怎么校验(v-for动态绑定的数据)

在vue项目中,使用element-ui的表单校验能节省很多时间,简单的对象表单校验,很简单,使用prop属性就可以直接校验。但是,如果表单项里有通过v-for动态生成的数组对象,又该怎么设置验证呢? 1、总结: // 简单总结一下: // 1、prop 属性动态绑定,为model对象下的数据,如formData.trip.days为循环数组: // 则::model="formData",:prop="'trip.days.'+ index +'.goProvince'" // 2、在el-form-.

weixin_43839317的博客 2506

ElementUI -- 表单嵌套表格,v-for生成的表单项实现表单验证。

1、界面代码: <!-- sku组合可视化显示 --> <el-form :model="listModel" ref="skuListForm"> <el-table v-if="skuVisible" :data="listModel.sku_list" border stripe> <el-table-column type="index"></el-table-column> <el-tabl

weixin_44490109的博客 2005

Element表单中动态增减表单项的循环校验实现

本文深入解析了在Vue项目中使用Element UI实现动态增减表单项时的循环校验难题。核心在于通过动态生成正确的prop路径(如`activities.${index}.name`)将每个表单项与校验规则精准绑定,并提供了从基础实现到动态规则、深层嵌套校验等进阶技巧的完整解决方案,帮助开发者构建稳健且用户体验良好的动态表单。

weixin_29007243的博客 309

【vue+elementui】v-for循环生成的表单项、动态生成的表单项的校验

v-for循环生成的表单项、动态生成的表单项都有个特性,就是prop不确定,没有prop的话我们就无法像普通表单验证那样校验,所以我们要用:prop来校验。 语法: :prop="`v-for绑定的数组.${v-for的索引}.v-model绑定的变量`" 示例如下: <el-form :model="organForm" ref="organForm"> <el-card v-for="(item, idx) in organForm.organList" :key="idx"&gt

OG 3592

Element通过v-for循环渲染的form表单校验

普通的form表单校验 日常业务开发中,对于中后台管理系统,form表单校验是一个很常见的问题。 查阅Element官方文档,我们了解到,form表单校验是这样的,需要给所校验的el-form-item添加prop属性值,这个属性值便就是当前元素v-model 所绑定的值。如图所示: v-for 循坏的表单校验 那么问题来了,通过v-for 遍历循环渲染的form表单怎么添加校验呢?主要问题就在...

前端踩坑之路 1万+

element-ui循环生成的列表进行校验

做后台管理系统遇到的问题,el-input输入框是通过循环生成的,用原来的验证方法对循环生成的输入框校验不生效. 之前的写法: ​ <div v-for="(list,index) in messageList" :key="index" > <...

MJ2029的博客 1562

elementui动态生成表单项,并添加动态校验

1.定义一个表单 dynamicValidateForm: { operatorid: "", domains: [] //动态生成的表单项都放在表单中的这个数组里面 }, 点击事件,点击按钮生成表单项 //动态添加表单 addDomain(){ this.dynamicValidateForm.domains.push({ graduateyear:'', //需要动态添加的表单项 college:'' , //需要动态添加的表单项 ......... }) }

无名之辈-_- 2089

(element-ui)v-for动态数据循环表单验证的处理

1.功能需求 标题描述看起来有些复杂,有vue,Element,又有表单验证,还有v-for循环? 首先Element组件有一套完善的表单验证方法,官方文档写的也很清楚:Element表单验证API,正常按照官方文档添加rules规则,需要验证的表单项设置prop,然后提交表单时通过form的validate方法验证表单项就可以了。 如果表单项里有通过v-for动态生成的表单项,如何设置验证呢? ...

weixin_45178761的博客 1991

vue使用Element组件时v-for循环里的表单项验证方法

<template> <div class="content-body"> <el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-row :gutter="10"> <el-col :span="12" :offset="0"&gt...

扬帆前行 6760

vue + element-ui el-form-item循环校验及 el-table和el-form表单校验嵌套使用

vue + element-ui el-form-item循环校验及 el-table和el-form表单校验嵌套使用无论是单纯的form-item循环还是把form-item放到表格的td中,其实都是在循环每个form-item,校验的方式有两种模版部分规则直接写到data中 无论是单纯的form-item循环还是把form-item放到表格的td中,其实都是在循环每个form-item,校验的...

weixin_37644989的博客 8209
上一篇: 批量修改操作成功,但是Oracle返回的结果为-1
CoderAllen
博客等级 码龄8年 3粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值