[element-ui] form的多个字段之间联动验证和取消验证

elementui笔记:el-table表格的输入校验 elementui笔记:借用el-form的校验,给el-table的每行数据做校验 阅读详情

字段: 去/返程日期(deptDate), 去/返程班次(flghtTrainSchedNo)
  1. 页面一进入时,都为非必填项,
  2. 逻辑出现必填的范围只有飞机和火车,汽车和自驾没有必填的验证
  3. 如果用户操作了,其中一项,两者都为必填
  4. 如果用户删除了一项且另一项无值时,变为非必填
  5. 如果先点击了飞机或火车再去点击汽车和自驾,则取消验证必填项
  6. 使用监听触发验证和取消验证

简单的描述: 两者一个有值时,验证,都无值时不验证
在这里插入图片描述

HTML片段
<div class="" v-for="(item,i) in form.tripTcktList" :key="'form.tripTcktList'+i">
	<div class="formlist">
	   <el-form-item :label="(item.roundTripInd ===1?'去':'返')+'程日期'"
	                  :prop="'tripTcktList.' + i + '.deptDate'"
	                  :rules="{ required: item.tripRequireStt, message: '日期不能为空', trigger: 'blur' }"
	    >
	      <el-date-picker value-format="timestamp" v-model="item.deptDate" class="width-100-per" type="date"
	                      placeholder="选择日期"></el-date-picker>
	    </el-form-item>
	    <el-form-item label="" prop=""></el-form-item>
	</div>
	<div class="formlist" v-if="item.tcktBoughtSttusCode==='16702'">
	    <el-form-item :label="(item.roundTripInd ===1?'去':'返')+'程班次'" class="inline-block"
	                  :prop="'tripTcktList.' + i + '.flghtTrainSchedNo'"
	                  :rules="{ required: item.tripRequireStt, message: '请填写航班号/车次/自驾', trigger: 'blur' }"
	    >
	      <el-input v-model.trim="item.flghtTrainSchedNo" @keyup.native="transLetter('form.tripTcktList.' + i + '.flghtTrainSchedNo',i,item.roundTripInd ===1?'dept':'arvl',item,queryNo)" @blur="queryNo(i,item.roundTripInd ===1?'dept':'arvl',item)" placeholder="请填写航班号/车次/自驾"></el-input>
	    </el-form-item>
	    <el-form-item label="" prop=""></el-form-item>
	</div> 
</div>              

注意的关键点: :rules="{ required: item.tripRequireStt, message: '请填写航班号/车次/自驾', trigger: 'blur' }",这里的item.tripRequireStt默认值时false

JS片段
  computed: {
    // 监听出行信息的必填状态
    judgeTripRequireStt(){
      return this.form.tripTcktList
    },
  },
  /**出行信息的状态 - 深度监听
     * idea:
     *  - 1. 只有自行购票时才会触发逻辑
     *  - 2. 只有在选择16601、16602时,才会去做判断;反之状态设置为false
     */
  judgeTripRequireStt: {
    handler (n) {
      if(this.form.selfBuyTripTcktInd === 1){
        // 当选择自行购票的时候  去程日期、去程班次、返程日期、返程班次都可以为空
        // 但是如果选择方式为火车、飞机时,只要填了去程日期/返程日期,则去程班次/返程班次必填
        // 只要填了去程班次/返程班次,则去程日期/返程日期必填
        let isRequire = false
        n.forEach((item,i)=>{
          if(item.deptTrnsprtCode ==='16601' || item.deptTrnsprtCode ==='16602'){
            if(item.deptDate||item.flghtTrainSchedNo){
              item.tripRequireStt = true
            }else{
              item.tripRequireStt = false
            }
          }else{
            item.tripRequireStt = false
            this.$refs.form.clearValidate('tripTcktList.'+ i +'.flghtTrainSchedNo')
            this.$refs.form.clearValidate('tripTcktList.'+ i +'.deptDate')
          }
        })
      }
    },
    deep: true
  },

在这里掉进过一个坑, 清楚字段验证时要使用拼接的字段,而不是使用下标, 切记!!!

【ElementUI 表单校验】一个 el-form-item 下多个表单校验(循环校验) 前端开发项目的过程中,批量表单循环校验是很常见的,如上图,动态添加奖励计算规则,把所有的表单放到了一个 el-form-item 下。也可以理解为 el-form-item 做了嵌套,外层当然也可以省略,样式做微调,下面通过代码来详细的看一下。不足之处,多多交流。 阅读详情

相关推荐

Vue + Element UI表单验证进阶:除了blur和change,如何用自定义trigger实现更灵活的校验时机?(附异步搜索验证案例)

本文深入探讨了Vue + Element UI表单验证的高级应用,特别是如何通过自定义trigger实现更灵活的校验时机。文章详细介绍了四种高阶验证方案,包括手动调用validateField方法、自定义事件系统、动态规则切换和复合字段联动验证,并附有异步搜索验证的完整案例,帮助开发者提升表单交互体验。

weixin_38169206的博客 457

VUE实现element的form表单中字段联动必填校验(根据一个字段内容决定另一个字段是否为必填项)

VUE实现element的form表单中字段联动必填校验(根据一个字段内容决定另一个字段是否为必填项)

gyzzdjy的博客 7307

Element Plus:Vue 3企业级UI组件库核心特性与实战指南

在现代前端开发中,UI组件库是提升开发效率、保证设计一致性的关键技术。其核心原理在于将常见的界面元素(如按钮、表单、表格)封装为可复用的组件,通过声明式API和响应式数据绑定,让开发者能够快速构建复杂界面。从技术价值看,优秀的组件库不仅能减少重复编码工作,还能提供完善的类型支持、主题定制和国际化方案,显著提升项目的可维护性和团队协作效率。在企业级后台管理系统、数据中台等应用场景中,这类工具尤为重要。Element Plus作为Vue 3生态中的代表性企业级UI库,正是这一理念的实践典范。它基于Vue 3的C

weixin_34072458的博客 364

elementUI表单校验–如何进行表单项之间的联动校验

elementUI表单校验–如何进行表单项之间的联动校验 平时开发,都是一个表单项对应一个校验规则,表单项和表单项之间是相互独立的,一个值的改变不会影响到另一个值的校验。但凡是总有例外,比如…比如那啥,没错,就那个…emmmm,抱歉,我是菜鸡,完全不明白为啥这么玩,这个需求时在干啥???头脑风暴了好一阵,想到几个可能会使用的场景(公司的需求,不好拿出来=_=)---- 游戏打造装备场景。根据玩家给的材料的不同,从而打造不同的装备,甚至于材料之间可能存在兼容性的问题。为了解决兼容性的问题,表单联动这种方式就可

weixin_43955315的博客 4650

Element Plus 深度解析:从 Vue 3 组件库重构到实战应用

在 Vue.js 生态中,组件库是构建现代化前端应用的核心基础设施,它通过封装可复用的 UI 元素和交互逻辑,极大地提升了开发效率和项目一致性。其原理在于遵循框架的设计哲学,提供声明式的 API 和响应式的数据绑定。这类库的技术价值在于标准化开发流程、保障视觉统一性,并降低复杂交互的实现门槛,广泛应用于中后台管理系统、数据可视化平台及各类 Web 应用。本文聚焦于 Vue 3 时代的明星组件库 Element Plus,它正是这一理念的杰出代表,通过全面拥抱 Composition API 和 TypeSc

weixin_34161029的博客 415

Vue3开发平台内置组件库:Element Plus平台化改造与AI物料系统实践

在现代前端工程化实践中,组件化开发是提升效率和维护性的核心理念。其原理在于将UI界面拆分为独立、可复用的代码单元,通过标准化接口实现组合与通信。这一技术价值在于统一设计规范、降低重复开发成本,并支撑团队协作。在Vue.js等框架生态中,组件库的应用场景尤为广泛,尤其在中后台管理系统开发中,能够快速构建一致的用户界面。然而,直接使用开源UI库常面临样式定制、行为统一和团队规范等挑战。为此,对Element Plus等成熟组件库进行平台化改造,通过全局配置、主题定制和业务封装,形成标准化的内置组件资产,成为关键

weixin_34226706的博客 306

输入框之间的联动+form表单编辑的提交取消+form表单校验

需求: 输入框1选择之后,输入框2会清空当前选项,根据输入框1的内容,输入框2个下拉选项有所改变。 编辑页面 1、页面初始化 //编辑页初始化的值 useEffect(()=>{ props.searchKpiDetail({ rcmId:query.rcmId||'', }).then( (res)=>{ 接口套娃,在res的花括号下面 searchForm.setFieldsVal...

weixin_45481456的博客 682

Vue3+Element-plus实战:从环境搭建到性能优化的完整指南

在现代前端开发中,构建高效、可维护的管理后台系统是核心需求。Vue3凭借其组合式API和优秀的TypeScript支持,提供了全新的开发范式。Element-plus作为其生态中成熟的UI组件库,为快速搭建界面提供了坚实基础。这套技术组合的价值在于,它能显著提升开发效率和用户体验,广泛应用于电商、企业ERP、数据中台等各类中后台场景。本文聚焦于Vue3与Element-plus的深度整合,通过实战解析**表格分页后保持滚动位置**的体验优化、**时间选择器**的精确小时分钟控制等高频需求,并分享从按需引入、

weixin_30634661的博客 360

Vue + Element UI 实现选框联动动态控制选框必填

本文介绍了在Vue+ElementUI框架中实现动态表单验证的方法。需求是在人员新增页面中,根据"LeaderDS"和"LeaderDS名称"字段的值动态控制新增字段"TLOR生效日"的必填状态。解决方案包括:1) 使用ElementUI的表单组件创建新字段;2) 通过computed属性动态计算验证规则,当"LeaderDS"不为空时返回必填规则对象,否则返回空对象;3) 将动态验证规则绑定到新字段的:rules属性上。

m0_70325779的博客 813

Vue表单处理的工程化实践:状态隔离、序列化与验证

表单是前端应用中最常见也最易被低估的交互子系统,其本质是具备独立状态生命周期、数据流契约和错误传播机制的微型应用。Vue的响应式能力简化了基础绑定,但也掩盖了状态污染、类型失真、序列化歧义等深层问题。理解v-model的语法糖本质、掌握reactive与ref在表单状态管理中的分层使用策略、构建语义明确的序列化逻辑(兼顾JSON、form-urlencoded与multipart场景),并实现可组合、带节流的异步验证体系,是保障中大型Vue项目表单健壮性的关键技术路径。本文聚焦于真实业务中高频出现的表单状态

weixin_34372728的博客 465

基于Vue与Element的电商后台管理系统开发实践与踩坑指南

在后台管理系统前端开发中,Vue与Element UI的组合凭借组件化、数据驱动和成熟的生态,成为构建电商后台的主流技术选择。通过vue-router实现路由权限控制,axios封装请求拦截与统一错误处理,再配合el-table、el-form等高频组件的配置化封装,开发者能显著降低重复劳动,聚焦业务逻辑。商品管理、订单流转、会员数据等场景均依赖表单校验与状态映射机制,而el-dialog焦点丢失、el-upload取消事件、表格滚动位置等细节处理也直接影响用户体验。从实际项目出发,梳理技术选型原理,剖析电

weixin_27240351的博客 267

(一)Element超实用的多表单验证

前言

厉害哥哥的博客 2356

基于Vue+Element的电商后台管理系统项目全解析:从登录鉴权到ECharts集成

前端工程化实践的核心在于将组件、状态、路由与接口请求串联成完整的业务闭环,而电商后台管理系统正是检验这一能力的典型载体。以Vue全家桶搭配Element UI构建的中后台项目,沉淀了大量可复用的工程范式:axios实例封装统一处理token注入与401跳转,路由守卫控制页面访问权限,el-table与分页组件组合成高频率的增删改查场景,ECharts按需引入实现数据可视化看板。理解这些基础机制后,无论是分析现成代码还是独立开发运营后台,都能快速定位问题并优化架构。从商品订单管理到用户权限控制,这套技术组合在

weixin_29007135的博客 274

element form 中的 table 添加 必填校验

element form 中的 table 添加 必填校验

pig_ning的博客 129

FOC控制必看:单/双/三电阻电流采样方案全对比(附NXP实战避坑指南)

本文深入对比了FOC控制中单电阻、双电阻和三电阻电流采样方案的优劣与适用场景,重点剖析了采样时序、窗口与ADC转换的工程挑战。针对NXP平台,提供了解决采样窗口过窄的实战方案与配置指南,帮助工程师根据成本与性能需求做出最优选择,并规避常见设计陷阱。

n2o3p4的博客 416

基于ensp大学网络规划与设计(完整文档+ensp拓扑图)

大家好,我是小华学长,一名计算机领域的博主。经过多年的学习和实践,我积累了丰富的计算机知识和经验,在这里我想与大家分享我的学习心得和技巧,帮助你成为更好的程序员。 作为一名计算机博主,我一直专注于编程、算法、软件开发等领域,在这些方面积累了大量的经验。我相信分享是一种双赢的方式,通过分享,我可以帮助他人提升技术水平,同时也能够得到学习交流的机会。 在我的文章中,你将会看到我对于各种编程语言、开发工具以及常见问题的解析和分析。我会结合自己的实际项目经验,为你提供实用的解决方案和优化技巧。我相信这些经验不仅能够

qq1325513482的博客 5万+

Vue3(篇三) Element Plus

在与后端交互:axios与请求封装中,我们掌握了前端与后端 API 交互的方式。现在数据能获取到了,但如何优雅地展示和管理这些数据呢?直接用原生 HTML 标签(table、form)可以实现功能,但样式简陋、交互生硬,还需要自己写大量 CSS 和 JavaScript。在实际开发中,我们通常使用UI 组件库来快速构建美观、交互友好的界面。是 Vue3 生态中最成熟的 UI 组件库,提供了表格、表单、对话框、分页等常用组件,开箱即用。本文将通过一个学生管理系统。

勇往直前的博客 312

Arduino程序设计(十)8×8 共阴极LED点阵显示(MAX7219)

本文主要介绍8×8 LED点阵显示实验,分别是:1、介绍MAX7219点阵模块;2、点阵显示部分图形;3、点阵显示数字 0~9 及 26 个英文字母。1、通过上述两个点阵实验,了解了8*8点阵显示的基本原理;2、通过SPI通信控制点阵显示,学会了Arduino用SPI通信方式控制外设。

Alice的博客 1万+

Avue-crud 实战指南:核心属性、方法与高级配置解析

在 Vue.js 中后台管理系统开发中,CRUD(增删改查)页面是核心且高频的需求。其原理是通过组件化封装,将列表、表单、弹窗、搜索、分页等通用交互模式抽象为可配置的模块,从而提升开发效率和维护性。这种配置化方案的技术价值在于,它通过声明式的 JSON 配置替代了大量重复的命令式代码,实现了关注点分离,让开发者能更专注于业务逻辑。其典型应用场景包括用户管理、订单处理、内容审核等各类数据管理后台。本文聚焦于基于 Vue 和 Element UI 的 Avue-crud 组件,深入剖析其核心配置属性如 `opt

weixin_30536513的博客 377

YOLOv5/v7/v8首发革新改进——轻巧、创新的LADH检测头

本文介绍了一种原创改进的轻量化非对称多级压缩LADH检测头,该检测头能够实现即插即用,并在YOLOv5/v7/v8检测器中取得了显著的性能提升。本文将介绍一种原创改进的轻量级非对称多级压缩LADH(Lightweight Asymmetric Dual-Head)检测头,该检测头能够实现即插即用,并显著提升YOLO检测器的性能。因此,我们提出了一种非对称多级压缩的方法,即对不同类别的检测头采用不同的压缩比例。然而,为了进一步提高YOLO的性能,我们进行了一项原创改进,设计了一种轻巧且创新的LADH检测头。

IpyVariable的博客 2726

Altium Designer(AD24/25)导出DXF或DWG结构文件的方法

DXF(Drawing Exchange Format)和DWG(Drawing)是两种常见的CAD(计算机辅助设计)文件格式,常用于结构和硬件之间的沟通。本文介绍Altium Designer(AD24/25)导出DXF或DWG结构文件的方法。

fydar的博客 2340

前端下拉框进阶实战:从基础到远程搜索与组件封装

下拉选择器是前端开发中处理用户输入的核心交互控件,其本质是提供一组预定义选项供用户选择。从原生的HTML `<select>`元素到现代组件库的封装,其原理在于通过数据绑定与事件驱动来管理选项状态。掌握其技术价值在于能显著提升表单交互的效率和用户体验,尤其在处理复杂数据如用户列表、地区信息时至关重要。在实际应用场景中,开发者常面临数据量大、需要异步加载或选项间存在级联关系等挑战,这便催生了对远程搜索、多选和自定义模板等进阶功能的需求。本文聚焦于基于Element Plus等主流UI库,深入解析如何实现这些复

迷彩风情 312

Agent应用实践之二十九 - 设计模式:人机协同

本章讲解了一种比较常见的设计模式:人机协同。通过一些场景举例,同时使用AgentScope本身自带的能力实现的人机协同模式,最后通过源码分析了AgentScope中如何实现。通过了解人机协同模式对于实际工程使用也是非常有用的。

代码让AI扣 306

Flutter for OpenHarmony 实战:HarmonyOS ArkTS API 24 步骤条(Stepper)与表单向导功能

项目使用了 controlsBuilder 来自定义控制按钮。默认的 Stepper 控制按钮样式可能不符合设计需求,通过 controlsBuilder 可以完全自定义按钮的外观和布局。一个主按钮,文字根据当前步骤变化:不是最后一步时显示"下一步",最后一步时显示"提交"一个文本按钮,显示"上一步",只有不是第一步时才显示按钮的回调分别调用 details.onStepContinue 和 details.onStepCancel,即 Stepper 自带的回调。

2301_79516858的博客 428

MicroCap声学仿真介绍(二)-创建声学仿真元件

声学库里包含孔、管、障板辐射器等器件,我们只需要按照仿真的需求,将声学库里的器件排列好,输入参数,用线连接起来即可。这里我们用D指代孔的直径,L指代孔的长度,N代表孔的数量。26.在弹出的界面中做如下设置:需要先在右面的选框里找到对应的项,然后右键Add Part,再之后就如下设置。3.在弹出的界面中,选择“Macro file(.mac)”,并点击右上角的“OK”下面就以声学仿真中常见的“孔”来做示例,跟大家一块演示一下宏程序的新建。10.在上图中“Value”中填入“R”,然后点击左边的“OK”按钮;

山无忧的博客 2201

13、核心网络模块:VyOS 设备配置实战

本文详细介绍了如何使用 Ansible 核心网络模块对 VyOS 虚拟设备进行自动化配置,涵盖环境搭建、变量设置、任务编写、playbook 运行及配置验证全过程。通过实际案例展示了 Ansible 在网络设备管理中的强大功能,包括多设备支持、模板化配置、备份回滚等优势,并提供了最佳实践建议与未来发展趋势分析,帮助读者提升网络运维效率。

linux6sysadmin的博客 114
上一篇: [WeChart]微信小程序抓包步骤
下一篇: [Form Generator][一期替代方案]调用接口数据到opitions
AlexKain
博客等级 码龄8年 35粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值