select选择器切换类型后,字段校验提醒没有清除

Redux Form表单状态管理:React中复杂表单的可控性实践 表单状态管理是前端开发的基础能力,涉及受控组件、数据流控制、实时校验与跨组件协同等核心概念。其原理在于将用户输入与组件状态解耦,通过统一的数据源驱动UI更新,从而保障状态一致性与可追溯性。技术价值体现在提升表单健壮性、支持审计日志、简化多步骤流程及降低边界case维护成本。典型应用场景包括金融开户、政务申报、B2B后台配置等强交互、高合规要求的业务系统。本文聚焦Redux Form这一专为表单设计的状态管理方案,深入解析其Field、Form、Reducer三位一体架构如何实现React与Redux在表单领 阅读详情

问题描述:

       我们的转接类型有三个选项:【转出-集团内】【 转出-集团外】【内部调动】

当我们在选择了【转出-集团外】后页面校验了转往党组织名称和转往党委名称字段并弹出rules的message提示,但是当我们切换类型后提示会跟到下一个类型的表单中,如下图:

解决方案:

一、手动触发验证和重置验证状态

1、在选择器的change事件处理函数flowAreaClick中手动触发表单验证,并重置表单的验证状态。

 

flowAreaClick() {
    // 其他逻辑...
    this.$refs.turnOutForm.validate();
    this.$refs.turnOutForm.resetFields();
}

 二、动态调整验证规则

1、创建一个计算属性,根据选择器的值动态返回不同的验证规则对象。

computed: {
    turnOutFormSearchrules() {
        if (this.turnOutForm.transferType === 'nzjlx_002') {
            return {
                transferOrganization: [
                    { required: true, message: '请输入完整党组织名称进行查询!', trigger: 'blur' },
                    { max: 65, message: '最多可以输入 65 个字符!', trigger: 'blur' }
                ],
                // 其他相关字段的规则根据实际情况调整
            };
        } else if (this.turnOutForm.transferType === 'nzjlx_003') {
            return {
                transferOrganizationW: [
                    { required: true, message: '请输入完整党组织名称!', trigger: 'blur' },
                    { max: 65, message: '最多可以输入 65 个字符!', trigger: 'blur' }
                ],
                transferCommittee: [
                    { required: true, message: '请输入完整党委名称!', trigger: 'blur' },
                    { max: 65, message: '最多可以输入 65 个字符!', trigger: 'blur' }
                ],
                // 其他相关字段的规则根据实际情况调整
            };
        } else if (this.turnOutForm.transferType === 'nzjlx_004') {
            return {
                transferOrganizationN: [
                    { required: true, message: '请选择党组织名称!', trigger: 'blur' },
                    { max: 65, message: '最多可以输入 65 个字符!', trigger: 'blur' }
                ],
                // 其他相关字段的规则根据实际情况调整
            };
        }
        return {};
    }
}

2、另外一种写法

 

computed: {
  turnOutFormSearchrules() {
    const commonRules = {
      transOutReason: [{ required: true, message: '请选择转出事由!', trigger: 'change' }],
      remark: [{ max: 65, message: '最多可以输入65个字符!', trigger: 'blur' }],
      duesDate: [{ required: true, type: "date", message: '请选择党费交至日期', trigger: 'blur' }],
      validityTime: [
        { required: true, message: "有效期不能为空,最多4个字符!", trigger: "blur" },
        { max: 4, message: "最多可以输入4字,已超最大限制!", trigger: "blur" },
        {
          validator: function (rule, value, callback) {
            value = Number(value)
            if (!Number.isInteger(value)) {
              callback(new Error('请输入数字!'));
            } else {
              callback();
            }
          }, trigger: 'blur'
        }
      ]
    };

    const rulesMap = {
      nzjlx_002: {
        transferOrganization: [
          { required: true, message: '请输入完整党组织名称进行查询!', trigger: 'blur' },
          { max: 65, message: '最多可以输入 65 个字符!', trigger: 'blur' }
        ],
        ...commonRules
      },
      nzjlx_003: {
        transferOrganizationW: [
          { required: true, message: '请输入完整党组织名称!', trigger: 'blur' },
          { max: 65, message: '最多可以输入 65 个字符!', trigger: 'blur' }
        ],
        transferCommittee: [
          { required: true, message: '请输入完整党委名称!', trigger: 'blur' },
          { max: 65, message: '最多可以输入 65 个字符!', trigger: 'blur' }
        ],
        ...commonRules
      },
      nzjlx_004: {
        transferOrganizationN: [
          { required: true, message: '请选择党组织名称!', trigger: 'blur' },
          { max: 65, message: '最多可以输入 65 个字符!', trigger: 'blur' }
        ],
        ...commonRules
      },
      default: {
        transferType: [{ required: true, message: '请选择转接类型!', trigger: 'change' }],
        radio: [{ required: true, message: '请选择转往党组织类型!', trigger: 'blur' }],
        transferOrganization: [
          { required: true, message: '请输入完整党组织名称进行查询!', trigger: 'blur' },
          { max: 65, message: '最多可以输入65个字符!', trigger: 'blur' }
        ],
        transferOrganizationW: [
          { required: true, message: '请输入完整党组织名称!', trigger: 'blur' },
          { max: 65, message: '最多可以输入65个字符!', trigger: 'blur' }
        ],
        transferOrganizationN: [
          { required: true, message: '请选择党组织名称!', trigger: 'blur' },
          { max: 65, message: '最多可以输入65个字符!', trigger: 'blur' }
        ],
        transferCommittee: [
          { required: true, message: '请输入完整党委名称!', trigger: 'blur' },
          { max: 65, message: '最多可以输入65个字符!', trigger: 'blur' }
        ],
        ...commonRules
      }
    };

    const selectedRule = rulesMap[this.turnOutForm.transferType] || rulesMap.default;
    return selectedRule;
  }
}

通过以上方法,我们可以根据选择器的值动态调整验证规则,并在切换选择器时手动触发验证和重置验证状态,以确保校验信息正常显示和消失。

ElementUI实战指南:从环境搭建到核心组件深度解析与避坑 在Vue.js生态中,组件库是提升开发效率、保障界面一致性的关键基础设施。其核心原理在于封装可复用的UI组件,通过声明式配置与数据驱动,将开发者从繁琐的样式与交互逻辑中解放出来。这类技术的核心价值在于实现快速开发、统一设计语言与灵活可控。尤其在构建后台管理系统、中后台应用等需要专业界面的场景时,一个成熟、文档齐全的组件库能大幅降低开发门槛。以ElementUI为例,作为基于Vue 2.x的桌面端组件库,它通过丰富的预制组件(如表单、表格、导航菜单)和清晰的规范,完美诠释了“提效、统一、可控”的工程实践理念。 阅读详情

相关推荐

深入解析ARM调试端口:SWD协议中的DP与AP寄存器操作

本文深入解析ARM调试端口中的SWD协议,详细介绍了DP与AP寄存器的操作方法和实战技巧。通过分析IDCODE、ABORT、CTRL/STAT等关键寄存器,以及MEM-AP的配置与使用,帮助开发者高效进行ARM芯片调试。文章还提供了典型调试场景的应用示例和常见问题排查指南,适合嵌入式开发工程师参考。

weixin_30919429的博客 114

模板驱动型文档自动化:无代码实现动态字段与条件逻辑

文档自动化是企业提升内容生产效率的关键技术路径,其核心在于将重复性文档生成从人工操作升级为规则驱动的智能流程。它基于模板引擎原理,通过数据绑定、动态字段计算和条件逻辑分支,实现跨系统数据实时对接与品牌样式强制统一。相比传统编码方案,无代码配置显著降低业务人员使用门槛,支持市场、法务、HR等非技术人员自主维护,保障合规性、可审计性与快速迭代能力。典型应用场景包括客户方案书、合同协议、报价单及合规证明文件等高频、高风险文档的标准化交付。

weixin_34006468的博客 377

CSS :not伪类的底层原理与工程化实践

CSS选择器中的:not伪类并非简单的逻辑取反,而是一种受浏览器渲染引擎匹配机制严格约束的精确否定工具。其核心原理在于仅支持简单选择器参数,匹配过程遵循从右向左的O(1)时间复杂度算法,直接影响CSS特异性计算与层叠行为。这一机制赋予:not独特技术价值:推动语义化HTML结构设计、减少重复样式声明、提升维护可预测性,并与:is()、:where()等现代选择器形成协同系统能力。典型应用场景包括表单状态控制(如button:not([disabled]))、表格奇偶行精细化着色、导航栏激活项排除及响应式布局

chuliaoqiao4046的博客 412

el-select的表单验证问题

先说需求把,做一个下拉框要求必填,问题是当触发了表单校验之后发现之后,再选择下拉选项的表单校验的提示信息文字并不能清除。 思路就是把这个表单绑定的值设置成计算属性,在watch里面监听这个属性,当里面有值的时候就手动清除这个表单校验。 代码如下:(data是要校验的数据,formData是表单数据) computed:{ data(){ return this.formData.data } }, watch:{ data(val){ if(val){ this.$refs['form

jichunhui1992的博客 2045

企业级人事系统实战:从微服务架构到数据权限的完整设计

在现代企业信息化建设中,构建一个稳定、高效且安全的数据管理系统是核心需求。这类系统通常基于微服务架构,通过解耦服务来提升系统的可扩展性和可维护性。其核心原理在于将复杂的业务领域拆分为独立的服务单元,每个单元负责特定的业务能力,并通过轻量级通信机制进行协作。这种架构的技术价值在于能够支撑高并发、快速迭代和灵活部署,尤其适用于业务规则复杂、数据敏感性高的场景,例如企业资源规划(ERP)或客户关系管理(CRM)系统。具体到职工信息管理这类应用,它要求系统不仅能处理常规的增删改查,更要实现对组织权限的精准建模和对业

frank1998819 648

基于Matlab的MIMO通信系统仿真_Simulink实现

瑞利衰落信道中使用空时分组码的BPSK调制的BER 1、2发1收 参数设置: 双极性信号元+1和-1,每符号含1bit; 采样时间=符号时间=1s; 采用基于数据帧的仿真计算模式,每帧中有2个采样值; 仿真时间=出现100个误码后停止仿真; 随机整数种子=22; Jakes衰落模型中每个信道上的多普勒频移=0.01Hz; 输人信号功率=2W; Alamouti码:两根发送天线,一根接收天线(分集阶= 2); 平均信道信噪比= 18dB; 仿真得出的误码率统计BER =0. 00017. 2、2发

太阳帅帅的博客 9688

element el-select 赋值之后校验消除不掉

默认没值的情况下,点击提交操作,会提示当前值为空,然后选择值之后,还会一直提示当前值为空,提示消除不掉,用change方法强制刷新也不行,重新赋值也不行,后来在form上加个key就好了,好神奇。

M781101的博客 931

Ambari 3.0.0 + BigTop 3.3.0 源码编译与集群部署指南(Kylin V10 / aarch64)

仅仅是针对“应用商店目录(Applications Catalog)”的一个外围附属子模块(它不是 YARN 监控大盘,不影响 YARN UI 网页的主体使用),我们可以采用。自带的 Node 二进制是 x86_64 版本,在 ARM64(aarch64)容器上无法执行(Exit value: 126)。:Ambari Server/Agent 使用 JDK 17,BigTop 大数据组件(Hadoop/HBase/Spark 等)使用 JDK 8。,源码中包含 x86 特定的原生二进制文件。

amumu1992的博客 480

【vue3+elementuiplus】el-select下拉框会自动触发校验规则的最强解决方案

el-select下拉框会自动触发校验规则的最强解决方案

bbt953的博客 1万+

掌握SiOME:从零构建OPC UA信息模型的完整指南

本文是掌握SiOME工具的完整指南,详细介绍了如何利用这款免费且强大的OPC UA建模工具,从零开始构建信息模型。内容涵盖从获取软件、创建命名空间、定义对象类型与变量,到添加方法、生成XML文件,并最终将其集成到开源的open62541服务器中。通过可视化建模,开发者可以高效、准确地设计复杂模型,大幅提升工业物联网与自动化项目的开发效率。

tcp8optimizer的博客 514

别再纠结VS还是VSCode了!新手C#环境搭建保姆级指南(含.NET Core安装验证)

本文为C#新手提供Visual Studio与VS Code的深度对比及环境搭建指南,涵盖.NET Core安装验证、工具选择决策框架及实战配置技巧。帮助开发者根据项目需求选择合适工具,快速搭建高效开发环境,提升编码效率。

weixin_30455023的博客 560

el-select点击选择后仍有rules提示问题

el-select点击选择后仍有rules提示问题

Giraffe0615的博客 2081

DSP28335 ADC模块实战:从寄存器配置到精准数据采集(附代码详解)

本文详细解析DSP28335的ADC模块配置与数据采集实战,涵盖寄存器设置、采样窗口优化、中断处理及代码实现。重点解决ADC精度问题,如采样窗口不足导致数据偏差,提供完整代码示例和调试技巧,助力工程师实现精准数据采集。

kkk56的博客 862

iview UI 下拉框select表单校验错误信息不消失

1.需求描述 弹窗添加时,对下拉框进行选择,点击确定进行非空校验 2.使用场景 对下拉框进行校验 3.问题描述 选中下拉框的值之后,下拉框select表单校验错误信息不消失 4.解决方案 (已解决加入) 经过排查,是change事件重复导致冲突了,如下代码所示: <FormItem label="选择实验名称" prop='abtest_id'> <Select v-mo...

2910

与rkipc通信

函数名称功能系统模块初始化系统模块反初始化重启恢复出厂设置导出日志导出配置文件导入配置文件系统升级获取用户数设置用户数获取用户权限设置用户权限获取用户名设置用户名获取密码(已加密)设置密码(已加密)新增用户删除用户。

qq_44643189的博客 1611

ROS 2 Slam Toolbox实战:从零跑通2D激光建图

SLAM(同步定位与地图构建)是移动机器人实现自主导航的基础技术,其核心在于通过传感器数据实时估计位姿并构建环境栅格地图。slam_toolbox作为ROS 2 Humble及后续LTS版本官方主推的2D SLAM后端,采用图优化+闭环检测架构,兼顾实时性、鲁棒性与工程可维护性。相比cartographer和hector_slam,它原生支持ROS 2、参数精简、诊断友好,特别适合硬件资源有限、缺乏IMU或深度相机的差速机器人平台。本文聚焦真实部署场景,覆盖RPLIDAR等常见2D激光雷达与TurtleBo

weixin_30596165的博客 354

WinCC人机交互不止于弹窗:手把手教你用VBS脚本打造一个简易数据录入与校验面板

本文详细介绍了如何利用VBS脚本在WinCC中构建专业级数据录入面板,突破传统弹窗限制。通过集成多字段输入、智能校验反馈和数据持久化方案,实现高效、可靠的工业数据采集。特别针对WinCC人机交互场景,提供从环境配置到高级功能扩展的完整解决方案,助力工程师提升HMI系统交互体验。

weixin_30326741的博客 371

Python爬虫实战教程:如何高效爬取税务局通知通告

税务局发布的通知通告包含政策法规、办税指南、公告信息等,是纳税人、企业合规经营的重要参考。官网发布频率高,手动查看不便,自动爬取并保存,方便信息及时掌握及历史数据归档。本文以合法合规的方式示范,建议实际应用前确认目标网站允许爬取的范围和方式。建议使用pandas进行数据清洗,如去重、空值处理等。对于研究税务政策、进行大数据分析、搭建行业信息平台,爬取税务局通知通告信息尤为关键。公告列表以分页形式展现,包含标题、发布时间和详情页链接。进行政策趋势图、发布频率统计等可视化。爬取公开数据时,务必遵守网站的。

2201_76125261的博客 1780

Tom Select 完整使用指南:从 0 到 1 掌握自动补全选择框的 4 大核心玩法

如果你还在用原生的 `<select>` 下拉框,大概已经受够了这几件事:选项一多就滚动到眼花、搜索要自己写、想输入新选项得先跟后端吵架。Tom Select 正是为这类场景而生的组件——一个只有约 16kb(gzipped)的"文本框 + 选择框"混合体,脱胎于 selectize.js,去掉了 jQuery 依赖,改造成了原生 JS 就能驱动的自动补全小部件,键盘导航的手感也接近原生控件。无论

gitblog_00081的博客 369

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

基于Element-UI的动态表单渲染器设计与实现

在Vue.js前端开发中,表单是数据交互的核心组件。其原理是通过数据绑定与事件监听,实现用户输入与数据模型的同步。动态表单技术在此基础上,通过配置化方案将表单的渲染逻辑与视图解耦,从而显著提升代码的可维护性和开发效率,尤其适用于需要根据数据状态、用户权限或业务阶段动态切换表单项类型(如输入框、下拉选择器、日期选择器等)的复杂后台管理系统。本文以广泛使用的Element-UI组件库为基础,深入探讨如何利用Vue的动态组件(`<component :is>`)特性,构建一个声明式、可配置的动态表单渲染器,并详细

weixin_30892763的博客 312

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

供应链系统级联选择与实时库存校验联动设计实践

级联选择与实时库存校验是现代供应链与电商系统提升数据录入准确性与业务流畅性的核心技术组合。级联选择通过维度下钻与数据过滤,帮助用户在多层级物料、仓库等主数据中精准定位,其本质是高效的数据导航与检索。实时库存校验则基于可用库存计算模型,在用户操作时即时验证业务可行性,防止超卖与缺货,保障了库存数据的强一致性。这两项技术的联动,将传统静态表单升级为动态决策引擎,实现了选择即校验、数据驱动界面的智能交互范式。其技术价值在于显著降低操作错误率、提升用户体验,并减轻后端无效数据处理压力。典型的应用场景包括销售订单创建

weixin_33770878的博客 372

Redux Form:React 表单状态管理的可治理架构方案

表单状态管理是前端工程中高频、高错、高协作的核心挑战。其本质并非UI渲染问题,而是多维状态(字段值、校验、异步加载、聚焦、提交生命周期)的协同建模与可追溯治理。传统 useState 或 useReducer 方案受限于组件作用域,难以支持跨组件感知、DevTools 时间旅行调试及全局审计埋点等企业级需求。Redux Form 以 Redux 为底座,将表单抽象为有限状态机,实现 Form State 的原子化、正交化存储与标准化 action 驱动,天然支撑 Managing Form State 的可

weixin_30905133的博客 411

鸿蒙 HarmonyOS 待办清单应用开发实战 —— 基于 ArkTS + SQLite 的完整教程

本文介绍了如何基于鸿蒙HarmonyOS的ArkTS语言和SQLite数据库开发一个功能完整的待办清单应用。主要内容包括: 项目概述: 实现待办事项的增删改查、状态切换、优先级管理、截止日期设置等核心功能 采用ArkTS + Stage模型 + SQLite技术栈 数据持久化设计: 选择SQLite作为存储方案,设计合理的表结构 定义了TodoItem和InsertTodoItem接口规范数据类型 封装TodoDatabase类管理数据库操作 关键技术点: 使用@ohos.data.relationalSt

s1316339343的博客 452

AM275x UHS-II主机控制器寄存器配置与中断管理实战解析

在嵌入式系统开发中,寄存器配置与中断管理是驱动开发的核心基础。寄存器作为CPU与硬件外设通信的桥梁,其每一位都定义了特定的控制、状态或数据功能。通过精确配置寄存器,开发者可以初始化设备、控制行为并监控状态。中断机制则允许硬件在特定事件发生时主动通知CPU,是实现实时响应与高效资源管理的关键技术。其价值在于提升系统响应速度与运行效率,广泛应用于存储、网络、传感器数据采集等场景。本文聚焦于德州仪器AM275x处理器中的MMCSD控制器,深入剖析其在支持UHS-II高速存储卡协议时的**寄存器架构**与**中断管

weixin_30613727的博客 399

若依框架 RuoYi-Vue 3.8.9 多租户隔离实战:从零到生产的完整改造指南

本文基于 RuoYi-Vue 3.8.9 原版框架(非Plus版本),分享了行级多租户隔离的完整生产级改造方案。目标是让多个租户共享同一套系统实例,但数据相互隔离。

kwb18293575696的博客 572

掌握Avue-crud核心方法与属性,从“能用”到“会用”的进阶指南

在Vue中后台开发中,高效的数据表格与表单管理是核心需求。组件化开发通过封装通用逻辑,能极大提升开发效率与代码复用率。其技术价值在于将复杂的CRUD交互抽象为可配置的属性和可调用的方法,使开发者能专注于业务逻辑而非底层DOM操作。在实际应用场景中,面对动态表单、复杂校验、行内编辑等需求时,深入理解组件的核心机制变得至关重要。本文聚焦于Avue-crud这一流行组件,深入解析其如`validate`、`row-update`等关键方法,以及`dicData`、`rules`等进阶属性的实战应用,帮助你驾驭复杂

weixin_30314813的博客 316
上一篇: Java实现2025年1月1日起最新退休年龄算法
下一篇: 华为原生鸿蒙操作系统的发布有何重大意义和影响:
@百思不如奇解
博客等级 码龄5年 352粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@百思不如奇解

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值