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
英文地址,請注明出處:http://en.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等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…