Debug-039-el-date-picker组件手动输入时间日期的问题处理

图1-外输入框

图2-内输入框

图3

     

问题描述:

        这两天在迭代功能的时候,基本上碰到的问题都是出自这个“时间日期选择框”,昨天的bug38也是解决这个组件。如上图1和2所示,可以把图1中的输入框叫外输入框,图2中的输入框叫内输入框,el-date-picker组件在官网上其实是有一个属性叫“editable”,可以禁止用户在文本框输入,但是很遗憾这个只能在外输入框生效,内输入框还是能编辑。由于业务上对日期有一些限制,因此不能选择任意日期,如果在内输入框手动输入日期,就限制不了日期范围,因此还是考虑禁用。
以前其实碰到测试在外输入框输入日期的情况,然后使用editable属性可以规避用户输入,其实也不是不想让用户输入,只是有两个方面考虑:(1)效率不高,很少有人去手动输入(2)同时输入的格式不正确,导致不能转换成前后端约定的格式,然后查询报错,因此直接使用editable禁用外输入框。其实对于所有只有外框的el-date-picker组件已经可以说是规避解决了这个问题。但是对于type="datetimerange"的这种类型比较特殊的时间日期范围搜索框来说就不行,因为它有“内输入框”。其实还是很建议官方单独给datetimerange类型的搜索框加个属性,就是把内框也禁用掉,这样就能让我们这些牛马轻松点了。所以,这次的问题就是:我希望禁用掉内输入框输入。

方案:

        还是跟上次一样有问题先请教cursor的意见。这次的cursor没有帮我“一步到位”的解决问题,尽管它“天花乱坠”的说了很多,而且引导了它几次都还是没有成功,我就知道那接下来只能靠我自己了。不过它还是为我提供了思路:那就是通过给内输入框添加“readonly”属性的方式实现禁用。

        说到底,内输入框本质上也是个input,只要给它添加readonly或者把它disabled就可以达到我们的要求了。在没有相关的属性或者API能完成任务的时候,通过在合适的时机,使用原始的js插入属性的方式。

        添加 @focus="timeEditable"方法,当用户点击外框然后显示了日期面板的时候,使用nextTick确保此时内输入框渲染完毕之后,再利用js定位到内输入框的元素位置,然后给所有的input追加一个readonly属性即可实现禁止输入的效果。

        <el-date-pickerv-else-if="item.type === 'DATEPICKER'":key="item?.dateType + (item?.valueFormat || '')"v-model="form[item.key]":type="item.dateType ?? 'daterange'":style="{ width: item.dateType ? '400px' : '300px' }"start-placeholder="开始日期"end-placeholder="结束日期"range-separator="至":clearable="!!item.clearable":editable="false":disabled-date="(time: Date) => item.dynamicDisabled ? handleDymicDisabled(time, item) : false":value-format="item.valueFormat ?? 'YYYY-MM-DD'":format="item.valueFormat ?? 'YYYY-MM-DD'"@focus="timeEditable"@calendar-change="handleCalendarChange"/>
//点击日期范围外面搜索框
function timeEditable(e: Event) {console.log('timeEditable', e)// 禁用时间日期范围组件里面的日期input输入框nextTick(() => {let els = document.querySelectorAll('.el-date-range-picker__time-picker-wrap input')console.log('els', els)for (var i = 0; i <= els.length - 1; i++) {els[i].setAttribute('readonly', 'readonly')}})} 

然后发现第一个日期输入框是可以禁止编辑了,但是第二个日期输入框并没有被禁止编辑,就是见了鬼了。加了打印,找到控制台的元素,反复推敲发现了原因。当用户在面板上选择日期的时候,是需要点击两次来确定“开始日期”和“结束日期”的,当点击选择第一个日期之后,第二个日期输入框视图是会被触发重新挂载更新了,导致之前加的readonly丢失,需要再加一遍。因此:

function handleCalendarChange(date: Date[]) {console.log('handleCalendarChange', date)// 禁用时间日期范围组件里面的日期input输入框nextTick(() => {let els = document.querySelectorAll('.el-date-range-picker__time-picker-wrap input')console.log('els', els)for (var i = 0; i <= els.length - 1; i++) {els[i].setAttribute('readonly', 'readonly')}})}

        在@calendar-change="handleCalendarChange"方法中是触发选择面板的日期的事件方法,在这里再找到所有input,再全部添加一次readonly即可,测试了一下确实验证了我的猜想。至此,终于实现了内输入框的禁用。补充一下,内输入框的时间选择框不受影响,它还是可以选择的。

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

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

相关文章

docker-runc not installed on system

问题 Docker build时Dockerfile有RUN命令执行报错shim error: docker-runc not installed on system&#xff0c;如下&#xff1a;解决方法 修改/etc/docker/daemon.json&#xff0c;添加正面内容 {"runtimes": {"docker-runc": {"path": "…

【秋招笔试】2025.08.27华为秋招研发岗真题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围在线刷题 bishipass.com 题目一:智能温控系统监测 1️⃣:使用滑动窗口技术维护有效温度区间 2️⃣:利用单调队列高效维护窗口内的最大值和最小值 3️⃣:动态调整窗口边界,确保满足温…

Kafka 消费模型

文章目录1. 一个消费者组中只有 1 个消费者2. 一个消费者组中有 2 个消费者3. 消费者数量 > 分区数量4. 多个消费者读取同一个分区5. 消费者放入消费者组5.1 何时放入同一个消费者组5.2 何时放入不同的消费者组1. 一个消费者组中只有 1 个消费者 假设我们有一个 TopicT1&am…

【路由器】TP Link 路由器为何无法进入管理后台

TL-WR710N是TP Link在很多年前发布的一个迷你型的便携路由器&#xff0c;一插上还能用&#xff0c;直接reset打算重设密码&#xff0c;结果根据它给的192.168.1.253根本打不开。# 解决方法ping一下192.168.1.253&#xff0c;无法连接。这个问题本质上是 你电脑/手机的 IP 和路由…

LightGBM(Light Gradient Boosting Machine,轻量级梯度提升机)梳理总结

LGB微软团队在 2017 年提出的梯度提升树模型&#xff0c;核心定位是 “更高效的 XGBoost”—— 它在保持精度接近 XGBoost 的同时&#xff0c;通过“数据采样优化”“特征压缩”“树生长策略改进”三大创新&#xff0c;将训练速度提升 10-100 倍&#xff0c;内存消耗降低数倍&a…

毕业项目推荐:29-基于yolov8/yolov5/yolo11的光伏板检测识别系统(Python+卷积神经网络)

文章目录 项目介绍大全&#xff08;可点击查看&#xff0c;不定时更新中&#xff09;概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式…

【实时Linux实战系列】实时数据可视化技术实现

在当今数据驱动的世界中&#xff0c;实时数据可视化已成为理解和利用实时信息的关键工具。无论是在金融交易监控、工业生产监控、智能交通管理还是物联网设备监控中&#xff0c;能够将复杂的数据以直观的图表形式展示出来&#xff0c;对于快速决策和问题解决至关重要。实时数据…

【LeetCode每日一题】21. 合并两个有序链表 2. 两数相加

每日一题21. 合并两个有序链表题目总体思路算法步骤时间复杂度与空间复杂度代码2. 两数相加题目总体思路算法步骤时间复杂度与空间复杂度代码知识感悟2025.8.3021. 合并两个有序链表 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所…

DVWA靶场通关笔记-文件包含(Impossible级别)

目录 一、源码分析 二、文件包含防范分析 1、明确指定允许包含的文件 2、拒绝所有未在白名单中的输入 3、总结 &#xff08;1&#xff09;白名单 (Allow List) &#xff08;2&#xff09;硬编码/映射 (Hardcoding/Mapping) &#xff08;3&#xff09;输入过滤 (Input F…

构建坚不可摧的数据堡垒:深入解析 Oracle 高可用与容灾技术体系

在当今数字化时代&#xff0c;数据是企业的核心资产&#xff0c;而承载这些数据的数据库系统的连续性与稳定性直接关系到企业的生死存亡。一次计划外的停机或灾难性的数据丢失&#xff0c;带来的不仅是经济上的巨大损失&#xff0c;更是对品牌信誉和客户信任的致命打击。因此&a…

【3D算法技术入门】如何基于建筑图片重建三维数字资产?

要基于建筑图片重建三维数字资产是一个复杂的计算机视觉任务&#xff0c;涉及图像采集、特征提取、相机姿态估计、稠密重建和三维模型优化等多个步骤。下面我将提供一个基于Python的解决方案框架&#xff0c;使用开源库实现从图片到三维模型的基本流程。 首先需要安装必要的库&…

⭐CVPR2025 自动驾驶半监督 LiDAR 分割新范式:HiLoTs 框架深度解析

&#x1f4c4;论文题目&#xff1a;HiLoTs: High-Low Temporal Sensitive Representation Learning for Semi-Supervised LiDAR Segmentation in Autonomous Driving ✍️作者及机构&#xff1a; R.D. Lin、Pengcheng Weng、Yinqiao Wang、Fei Wang&#xff08;西安交通大学软件…

【 MYSQL | 基础篇 函数与约束 】

摘要&#xff1a;本文介绍数据库中的函数与约束&#xff0c;函数含字符串、数值、日期、流程四类&#xff0c;可实现字符串处理、数值计算等需求。约束分六类&#xff0c;重点讲外键约束的语法、删除更新行为&#xff0c;保证数据正确完整。思维导图1. 函数函数是指一段可以直接…

Oracle 数据库性能调优:从瓶颈诊断到精准优化之道

引言&#xff1a;性能优化的本质在当今数据驱动的时代&#xff0c;数据库性能直接关系到企业的运营效率和用户体验。Oracle 作为全球领先的关系型数据库管理系统&#xff0c;承载着众多企业的核心业务。然而&#xff0c;随着数据量的增长和业务复杂度的提升&#xff0c;数据库性…

杨校老师竞赛课堂之C++语言GESP一级笔记

考试大纲 GESP一级考试大纲 计算机基础与编程环境 计算机历史 变量的定义与使用 基本数据类型&#xff08;整型、浮点型、字符型、布尔型&#xff09; 输入与输出&#xff08;cin与cout、scanf与printf&#xff09; 基本运算&#xff08;算术运算、关系运算、逻辑运算&am…

操作系统-管程

1. 为什么需要管程&#xff1f;—— 信号量 (Semaphore) 的困境在理解管程之前&#xff0c;你必须先知道它要解决什么问题。之前&#xff0c;我们使用信号量 (Semaphore) 来实现进程/线程间的同步与互斥。虽然信号量功能强大&#xff0c;但它存在两个主要问题&#xff1a;编程复…

日志的实现

目录 日志与策略模式 Log.hpp class LogStrategy基类 class ConsoleLogStrategy派生类 classFileLogStrategy派生类 日志等级 获得时间戳 localtime_r函数详解 函数原型 struct tm结构的指针 Logger类(重点) class LogMessage 日志信息类 std::stringstream 用法 重…

【论文阅读】Sparse4D v2:Recurrent Temporal Fusion with Sparse Model

标题&#xff1a; Sparse4D v2&#xff1a;Recurrent Temporal Fusion with Sparse Model 作者&#xff1a; Xuewu Lin, Tianwei Lin, Zixiang Pei, Lichao Huang, Zhizhong Su motivation 在v1的基础上&#xff0c;作者发现长时序有更好的效果&#xff0c;但v1的计算量太大&am…

构建免费的音视频转文字工具:支持多语言的语音识别项目

在当今数字时代&#xff0c;音视频内容越来越多&#xff0c;但如何快速将其转换为文字一直是一个挑战。本项目提供了一个免费的解决方案&#xff0c;支持将视频和音频文件转换为文字&#xff0c;并且支持多语言识别。 一个支持中英文的音视频转文字工具&#xff0c;集成了 Vos…

【开题答辩全过程】以 基于SpringBootVue的智能敬老院管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…