Element UI自動完成組件與表單校驗衝突:如何解決表單校驗失敗的問題?
Element UI自動完成組件與表單校驗衝突的解決方案
在使用Element UI的el-autocomplete
組件時,經常會遇到表單校驗失敗的問題:即使用戶已選擇下拉選項,輸入框顯示正確值,表單仍提示未填寫。本文分析此問題並提供解決方案。
問題描述:
表單使用el-autocomplete
組件實現用戶名選擇,並用el-form-item
和prop
屬性進行校驗。 el-autocomplete
的select
事件綁定了處理用戶選擇邏輯的函數。然而,用戶選擇後,表單校驗仍失敗,提示“請輸入用戶名”。
代碼示例:
組件代碼:
<el-form-item label="用户名" prop="username"> <el-autocomplete :fetch-suggestions="querysearch" class="usernameinput" placeholder="选择或输入用户名" v-model="selectuserinfo"> </el-autocomplete> </el-form-item>
校驗規則:
rules: { username: [{ required: true, message: '請輸入用戶名', trigger: 'blur' }], password: [{ required: true, message: '請輸入密碼', trigger: 'blur' }] },
相關函數:
selectoption(params) { console.log(this.selectuserinfo); this.loginform.username = params.username; this.loginform.password = atob(params.password); }, onblur() { console.log('blur'); console.log(this.loginform.username, this.selectuserinfo); this.loginform.username = this.selectuserinfo; },
問題分析與解決方法:
問題根源在於直接賦值this.loginform.username = params.username
可能破壞Vue的響應式機制。 Vue的響應式系統依賴數據變化觸發視圖更新和表單校驗。直接修改對象屬性,Vue無法追踪變化,導致表單校驗無法更新。
解決方案:
-
確保
loginform.username
響應式:如果loginform
是普通JavaScript對象,直接賦值不會觸發Vue響應式更新。使用Vue.set
方法或對象展開運算符更新loginform.username
,確保Vue追踪數據變化。selectoption(params) { this.$set(this.loginform, 'username', params.username); // 使用Vue.set this.loginform.password = atob(params.password); }
登入後複製或:
selectoption(params) { this.loginForm = { ...this.loginForm, username: params.username }; // 對象展開運算符this.loginForm.password = atob(params.password); }
登入後複製 檢查
trigger
屬性:trigger: 'blur'
僅在輸入框失去焦點時觸發校驗。el-autocomplete
的選擇操作可能不會觸發blur
事件。嘗試將trigger
屬性修改為'change'
或同時使用'blur'
和'change'
,或根據實際情況選擇合適的觸發事件。檢查
v-model
綁定和loginform
初始化:確保v-model
綁定數據正確,且loginform
對象正確初始化為響應式對象。
通過以上方法,即可解決Element UI自動完成組件與表單校驗衝突的問題,確保表單校驗的準確性。
以上是Element UI自動完成組件與表單校驗衝突:如何解決表單校驗失敗的問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...

SpringBoot中使用Redis緩存OAuth2Authorization對像在SpringBoot應用中,使用SpringSecurityOAuth2AuthorizationServer...

歐易交易所app支持蘋果手機下載,訪問官網,點擊“蘋果手機”選項,在App Store中獲取並安裝,註冊或登錄後即可進行加密貨幣交易。

使用RedisTemplate進行批量查詢時為何返回值為空?在使用RedisTemplate進行批量查詢操作時,可能會遇到返回的結果�...

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。
