VUE Date类型前端判断动态校验

news2024/9/19 10:51:55

需求

原本需求

一个编号和一个日期在流程中的审查人节点必填,于是我就直接写了前端必填校验

所有代码和名称已做更改,不涉及到公司隐私

<CustomFormItem label="登记编号" prop="registerNo" v-if="'asset_examiner' == form.node || trueNode=='asset_examiner'">
              <Input v-model="form.registerNo" placeholder=""  style="width:90%" :disabled = "view || 'asset_examiner' != form.node"></Input>
              </CustomFormItem>
<CustomFormItem label="登记日期" prop="registerDate" v-if="'asset_examiner' == form.node || trueNode=='asset_examiner'">
        <DatePicker type="date" v-model="form.registerDate" class="ivu-input6" style="width: 100%"
                     :disabled = "view || 'asset_examiner' != form.node"
                     format="yyyy-MM-dd"></DatePicker>
        </CustomFormItem>
//验证信息
validateRule: {
	registerNo: [
                    {required: true,  pattern: '[^ \x22]+', message: '不能为空', trigger: 'blur'}
                ],
	registerDate: [
                    {required: true, type:'date' ,message: '不能为空', trigger: 'blur'}
                ]
}

pattern: ‘[^ \x22]+’ :空格校验,不能为空格
如果前端vue 为日期类型的话(type=“date”),校验时也应该设置类型 type:‘date’ ,不然将无效
具体可见:https://blog.csdn.net/weixin_46573158/article/details/120908350?spm=1001.2014.3001.5501

上线

在测试没问题之后上线,上线第一天经理发现少提了个需求,紧急加了一个需求,一小时之内上线:如果是特殊业务类型的话,这两字段就不为必填
我在 js 做判断

registerNo: [
                    {required: false,  pattern: '[^ \x22]+', message: '不能为空', trigger: 'blur'}
                ],
                registerDate: [
                    {required: false,  message: '不能为空', trigger: 'blur'}
                ]

此时把 type:‘date’ 删除是因为设置值在校验前面,已经把值设置为string类型了,再做的校验

this.form.registerNo = res.data.registerNo;
this.form.registerDate = res.data.registerDate != null ? this.$formatDate(res.data.registerDate, 'yyyy-MM-dd') : "";
//审查人节点项目 如果是特殊业务类型的话,编号和日期就不设置为必填
this.form.node = node; //记录当前节点  重新复制当前节点信息
if (this.form.node == 'asset_examiner') {
    if ( (this.public.businessType != null && this.public.businessType == '1-02') ||  (this.public.businessType != null && this.public.businessType == '1-03')) {
                            this.validateRule.registerNo[0].required = false;
                            this.validateRule.registerDate[0].required = false;
   } else {
          this.validateRule.registerNo[0].required = true;
          this.validateRule.registerDate[0].required = true;
     }
} else {
         this.validateRule.registerNo[0].required = false;
         this.validateRule.registerDate[0].required = false;
}

出大问题

问题有人开始反馈自己日期填写了值但是还是有非空校验,编号没有问题,那就是日期的校验设置有问题。为了不影响投放流程走下去,我们先暂时把校验放开打了一版上去。

解决问题

编号没有问题,日期有问题,显然就是date类型设置校验的时候跟string不同。经过一番讨论,最后得出:
先不设置校验,然后当只有在审查人节点并且不是特殊业务类型才添加校验,并且把赋值放在校验之后,先校验,再赋值(因为如果是同一合同多次放款会自动带出第一次放款时填的值)

 // registerDate: [
//     {required: false,  message: '不能为空', trigger: 'blur'}
// ]
registerDate: []
this.form.node = node; //记录当前节点  重新复制当前节点信息
                    if (this.form.node == 'asset_examiner') {
                        if ( (this.public.businessType != null && this.public.businessType == '1-02') ||  (this.public.businessType != null && this.public.businessType == '1-03')) {
                            this.validateRule.registerNo[0].required = false;
                        } else {
                            this.validateRule.registerNo[0].required = true;
                            this.validateRule.registerDate = [];
                            //只有在审查人节点并且不是特殊业务类型才添加校验
                            this.validateRule.registerDate.push(
                                {required: true, type:'date', message: '不能为空', trigger: 'change'}
                            );
                        }
                    }
                    this.form.registerNo = res.data.registerNo;
                    this.form.registerDate = res.data.registerDate != null ? this.$formatDate(res.data.registerDate, 'yyyy-MM-dd') : "";

总结

前端js设置动态判断校验时,
String类型:

this.validateRule.registerNo[0].required = false;

Date类型:

//先清空校验,防止有值
this.validateRule.registerDate = [];
this.validateRule.registerDate.push(
       {required: true, type:'date', message: '不能为空', trigger: 'change'}
);

学习

前端push() 相当于 Java:add()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cleanmymac2023免费版纯净mac电脑系统管家

如今&#xff0c;我们在生活的方方面面都使用支持互联网的设备——查找信息、购物、银行、做作业、玩游戏&#xff0c;以及与朋友和家人保持联系。因此&#xff0c;我们的设备包含许多关于我们的个人信息。 此外&#xff0c;随着时间的推移&#xff0c;任何伟大的设备都会变得…

VIAVI唯亚威FFL-050/-100 可视故障定位仪

不管是进行安装还是故障排查&#xff0c;可视故障定位仪 (VFL) 都是快速、 方便定位光纤问题区域的必要工具。通过显示光纤损坏的准确位置&#xff0c; 技术人员能诊断、定位并有效地修复故障点。VFL 也可用于执行连接 性测试和光纤识别。 用于检查光纤弯曲和断裂、损伤位置和…

iNFTnews|Facebook、Twitter先后扑街,社交媒体的未来属于Web3?

最近埃隆马斯克&#xff08;Elon Musk&#xff09;收购推特的举动引发了热议。一方面&#xff0c;一些用户认为这位特立独行、做事说一不二的亿万富翁可以真正充分发挥平台的巨大潜力。但另外一部分人却因此担忧互联网未来的发展。 想想看&#xff0c;推特是世界上用户最多的社…

javaweb之会话技术

Cookie Cookie的基本使用 对于Cookie的使用&#xff0c;我们更关注的应该是后台代码如何操作Cookie&#xff0c;对于Cookie的操作主要分两大类&#xff0c;本别是发送Cookie和获取Cookie,对于上面这两块内容。 1、发送Cookie 创建Cookie对象&#xff0c;并设置数据 Cookie c…

6-1 邻接矩阵存储图的深度优先遍历

6-1 邻接矩阵存储图的深度优先遍历 分数 20 作者 DS课程组 单位 浙江大学 试实现邻接矩阵存储图的深度优先遍历。 函数接口定义&#xff1a; void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) );其中MGraph是邻接矩阵存储的图&#xff0c;定义如下&#xff1a; t…

35岁互联网人只会被清退,是我听过最大的谎言

作为一个在测试行业摸爬滚打11年的老鸟&#xff0c;距离35岁还有两个月&#xff0c;目前在一家互联网公司担任 测试总监 的岗位。回看这些年的进阶之路&#xff0c;能做到今天的职位&#xff0c;关键的就是那几步。 而我认识的目前已失业和依然在做基层测试的同行&#xff0c;…

谷歌插件使用开发

谷歌插件 谷歌浏览器扩展程序&#xff1a;扩展是 Web 平台中使用的HTML、CSS、JavaScript、图像和其他文件的压缩包。可以修改用户浏览并与之交互中的web内容&#xff0c;它们还可以扩展和更改浏览器本身的行为。 开发核心 api 文档&#xff1a;link 插件主要是根据包内的mani…

mysql数据库主从同步

数据库版本 主&#xff1a;5.7.34 从&#xff1a;8.0.21 主数据库 修改mysql配置文件 my.ini&#xff08;windows&#xff09; 查看配置文件存在位置 -- 查看配置文件存在位置 show variables like %data%;修改内容 boo_db为同步的数据库名 server-id1log-binmysql-bin#目标…

手写一个单例模式,Demo,检测

手写一个单例模式&#xff0c;Demo&#xff0c;检测需求分析单例介绍一般情况DemoResult单例模式&#xff08;饿汉式—静态常量方式&#xff08;线程安全&#xff09;&#xff09;DemoResult懒汉式&#xff08;线程不安全&#xff09;DemoResult懒汉式&#xff08;加入锁机制&a…

K8s安装乐维5.0应用部署文档

乐维产品包具体打包为4个镜像包&#xff0c;分别为&#xff1a;mysql5.7.36.tar、zabbix_server.tar、itops_v1_4_x86_64.tar、bpm0.1.tar&#xff0c;对应的配置文件分别为&#xff1a;data.tar、conf.tar、nginx-v1.3.tar.gz、bpm12.zip。 K8s yaml文件具体打包为strogeclas…

[附源码]Python计算机毕业设计django学生学习评价与分析系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

数字逻辑·时序线路分析【触发器和时序线路分析方法】

课程目标 掌握触发器的特征表达式掌握触发器的激励表掌握触发器的状态表掌握时序线路分析方法 课程内容 D触发器 逻辑符号可以不画RD&#xff0c;SD&#xff0c;CP 上方&#xff1a;特征表达式&#xff1b;左下&#xff1a;激励表&#xff1b;右下&#xff1a;状态图 状态图…

list容器(20221117)

一、list容器 1、基本概念 功能&#xff1a;将数据进行链式存储 链表是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过指针实现的 链表由一系列的节点组成&#xff1b; 节点的组成&#xff1a;一个是存储数据元素的数据域&#xff0c;另一个是存…

初探softmax

什么是softmax Softmax,又称作归一化指数函数。主要用于分类任务&#xff0c;降多分类的结果以概率的形式展现 下图展示softmax计算方法 softmax本质上是归一化网络&#xff0c;目的是将多个标量映射为一个概率分布,其输出的每一个值范围在&#xff08;0&#xff0c;1&#x…

使用 Next.js、 Prisma 和 PostgreSQL 全栈开发视频网站

通过上一篇文章&#xff0c;我们对乔巴乐高海报平台的整体架构有了初步的了解。今天我们深入到编辑器部分&#xff0c;对其中的难点和实现细节进行分析。 这是目前生产的编辑器页面&#xff1a; 不难看出和市面上大部分低代码平台一样&#xff0c;由三部分组成&#xff1a;左侧…

10名IB学生获得满分,新加坡环球印度国际学校成为一匹黑马

近年来留学人数大幅度上升&#xff0c;其中新加坡因多元的文化环境、健全的教育制度&#xff0c;深受学生、家长青睐喜爱&#xff0c;新加坡国际学校也因此成为了香饽饽。 在每年的IB成绩放榜中&#xff0c;新加坡国际学校IB表现都非常亮眼。 除了我们熟悉的华中、德威、UWC等一…

宏记录器 Macro Recorder 2.0 注册版

记录鼠标和键盘操作以无限重播...... 不再执行相同的任务两次&#xff01; Macro Recorder 像录音机一样捕捉鼠标事件和击键&#xff0c;让您在计算机上自动执行繁琐的程序。 按记录。执行操作。 Macro Recorder 记录您的鼠标移动、鼠标点击和键盘输入。就像电脑的录音机一样。…

RabbitMQ第四个实操小案例——DirectExchange

文章目录RabbitMQ第四个实操小案例——DirectExchangeRabbitMQ第四个实操小案例——DirectExchange DirectExchange&#xff1a;这种交换机的模式跟前面的Fouout&#xff08;广播&#xff09;不太一样&#xff0c;DirectExchange 会将接收到的消息根据规则路由到指定的Queue&a…

(免费分享)基于springboot,vue毕业设计管理系统

源码获取&#xff1a;关注文末gongzhonghao&#xff0c;输入011领取下载链接 开发工具IDEA ,数据库mysql5.7 &#xff0c;前后端分离 系统分学生、教师、管理员三个角色 1.学生截图 2.教师截图&#xff1a; 3.管理员截图&#xff1a; package com.cx.controller;import cn.…

C++实现哈希表。

目录 一. unordered_map unordered_set 和 map set的区别 二. 哈希 1. 哈希&#xff0c;哈希表&#xff0c;哈希函数。 2. 哈希冲突。 3. 哈希函数补充 3. 解决哈希冲突的两大方法&#xff1a;闭散列&#xff0c;开散列 闭散列 闭散列实现代码&#xff1a; 闭散列的删除…