Vue3+Element Plus表單驗證實戰:從零實現用戶管理

前言

在Vue3項目開發中,表單驗證是保證數據完整性和準確性的重要環節。Element Plus作為Vue3的流行UI組件庫,提供了強大的表單驗證功能。本文將基于一個用戶管理模塊的實戰案例,詳細介紹Vue3中如何使用Element Plus實現完整的表單驗證流程。

一、項目基礎結構

首先,我們來看一下基本的項目結構,這是一個典型的用戶管理頁面,包含查詢、新增、編輯、刪除等基本功能:

html

復制

下載

運行

<template><div><!-- 查詢區域 --><div class="card mb-5"><el-input clearable @clear="selectListPage" style="width: 240px;" v-model="data.send.name" placeholder="請輸入名稱查詢"></el-input><el-button type="primary" class="ml-10" @click="selectListPage">查詢</el-button><el-button type="warning" @click="reset">重置</el-button></div><!-- 操作按鈕區域 --><div class="card mb-5"><el-button type="primary" @click="insertWindow">新增</el-button><!-- 其他操作按鈕... --></div><!-- 表格區域 --><div class="card mb-5"><el-table :data="data.tableDataList" style="width: 100%"><!-- 表格列定義... --></el-table></div><!-- 分頁區域 --><div class="card"><el-paginationv-model:current-page="data.send.currentPage"v-model:page-size="data.send.pageSize"layout="total,sizes, prev, pager, next":page-sizes="[10, 15, 20, 50]":total="data.send.total"@current-change="selectListPage"@size-change="selectListPage"/></div><!-- 表單彈窗 --><el-dialog v-model="data.sendFormFlag" title="用戶信息" width="500" :close-on-click-modal="false" destroy-on-close><el-form ref="formRef" :model="data.sendForm" :rules="data.rules" label-width="80px" style="padding: 20px 30px 20px 0"><!-- 表單字段... --></el-form></el-dialog></div>
</template>

二、表單驗證核心實現

1. 表單驗證的基本配置

表單驗證需要以下幾個關鍵配置:

javascript

復制

下載

const data = reactive({// ...其他數據sendForm: {}, // 表單數據對象rules: {      // 驗證規則name: [{required: true, message: '請填寫賬號', trigger: 'blur'}],nick: [{required: true, message: '請填寫昵稱', trigger: 'blur'}],avatar: [{required: true, message: '請填寫頭像', trigger: 'blur'}],}
})

2. 表單組件綁定

在模板中,我們需要將表單、驗證規則和表單數據綁定起來:

html

復制

下載

運行

<el-form ref="formRef" :model="data.sendForm" :rules="data.rules" label-width="80px"><el-form-item label="用戶名" prop="name"><el-input v-model="data.sendForm.name" autocomplete="off"></el-input></el-form-item><!-- 其他表單項... -->
</el-form>

關鍵點說明:

  • :model:綁定表單數據對象

  • :rules:綁定驗證規則對象

  • prop:必須與表單數據對象的屬性名一致

  • ref:用于在腳本中訪問表單實例

3. 驗證規則的觸發方式

Element Plus提供了多種驗證觸發方式:

  • blur:失去焦點時觸發

  • change:值改變時觸發

  • 也可以組合使用:['blur', 'change']

三、表單驗證的執行流程

當用戶點擊提交按鈕時,我們需要手動觸發表單驗證:

javascript

復制

下載

const confirmInsertOrUpdate = () => {formRef.value.validate((valid) => {if (valid) { // 驗證通過$http.post("/user/insertOrUpdate", data.sendForm).then(res => {if (res.data.code === "200") {data.sendFormFlag = falseElMessage.success('保存成功')} else {ElMessage.error('保存失敗,' + res.data.message)}selectListPage()})} else {ElMessage.error('表單填寫不滿足需求')}})
}

流程說明:

  1. 調用formRef.value.validate方法觸發表單驗證

  2. 回調函數接收驗證結果valid

  3. 如果驗證通過(validtrue),則提交數據

  4. 如果驗證失敗,顯示錯誤提示

四、常見問題與解決方案

1. 表單殘留問題

當關閉對話框后再次打開時,可能會遇到表單驗證狀態殘留的問題。解決方案是:

html

復制

下載

運行

<el-dialog destroy-on-close><!-- 表單內容 -->
</el-dialog>

destroy-on-close屬性會在對話框關閉時銷毀內部組件,確保每次打開都是全新的狀態。

2. 動態表單驗證

對于動態生成的表單字段,可以使用動態prop和動態規則:

javascript

復制

下載

data.rules = {[`field_${index}`]: [{ required: true, message: '必填項', trigger: 'blur' }]
}

3. 自定義驗證規則

除了內置的驗證規則,我們還可以自定義驗證函數:

javascript

復制

下載

const validatePassword = (rule, value, callback) => {if (value.length < 6) {callback(new Error('密碼不能少于6位'))} else {callback()}
}data.rules = {password: [{ validator: validatePassword, trigger: 'blur' }]
}

五、后臺接口設計建議

為了簡化前端邏輯,建議后臺接口設計時考慮:

  1. 新增和修改共用接口

javascript

復制

下載

$http.post("/user/insertOrUpdate", data.sendForm)
  1. 批量操作接口

javascript

復制

下載

$http.post("user/list_delete", { ids: [1, 2, 3] })
  1. 統一響應格式

json

復制

下載

{"code": "200","message": "操作成功","data": {}
}

六、總結

通過本文的實戰案例,我們學習了在Vue3項目中使用Element Plus實現表單驗證的完整流程。關鍵點包括:

  1. 正確配置表單驗證規則

  2. 合理綁定表單數據和驗證規則

  3. 正確處理表單提交和驗證結果

  4. 解決常見的表單驗證問題

表單驗證是前端開發中的重要環節,良好的驗證體驗可以顯著提高應用的用戶體驗和數據質量。希望本文能幫助你在Vue3項目中更好地實現表單驗證功能。

完整代碼已在文中展示,建議讀者結合實際項目需求進行調整和擴展。對于更復雜的驗證場景,可以參考Element Plus官方文檔中的高級用法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84637.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84637.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84637.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

力扣上C語言編程題:合并區間(涉及數組)

一. 簡介 本文記錄力扣網上涉及數組方面的編程題&#xff0c;主要以 C語言實現。 二. 力扣上C語言編程題&#xff1a;合并區間&#xff08;涉及數組&#xff09; 以數組 intervals 表示若干個區間的集合&#xff0c;其中單個區間為 intervals[i] [starti, endi] 。請你合并所…

SEO長尾詞與關鍵詞優化實戰

內容概要 在SEO優化體系中&#xff0c;核心關鍵詞與長尾詞的協同作用直接影響流量獲取效率與用戶觸達精度。本文將從基礎概念切入&#xff0c;系統梳理核心關鍵詞的篩選標準與競爭強度評估方法&#xff0c;并深入探討長尾詞在細分場景下的價值定位。通過分析用戶搜索行為與意圖…

博圖SCL語言教程:靈活加、減計數制作自己的增減計數器(CTUD)

博圖SCL語言教程&#xff1a;使用SCL實現增減計數器(CTUD) 一、什么是增減計數器(CTUD)&#xff1f; 增減計數器&#xff08;Up-Down Counter&#xff09;是PLC編程中的基礎功能塊&#xff0c;具有以下特性&#xff1a; CU (Count Up)&#xff1a;上升沿觸發計數值增加 CD (…

Android 應用被kill問題排查和處理

一、背景 博主有一款應用市場應用,同樣的應用,在Android 10上開啟三個下載正常,在Android 14上開啟下載安裝,很頻繁被kill。首先想到的是,是不是應用內存太高,導致被kill,通過工具分析內存也不高,后面就想到是不是系統本身分配給應用的內存就不高,后來通過排查,確實是和系統的…

從代碼學習深度強化學習 - 多臂老虎機 PyTorch版

文章目錄 前言創建多臂老虎機環境多臂老虎機算法基本框架(基類)1. ε-貪心算法 (Epsilon-Greedy)2. 隨時間衰減的ε-貪婪算法 (Decaying ε-Greedy)3. 上置信界算法 (Upper Confidence Bound, UCB)4. 湯普森采樣算法 (Thompson Sampling)總結前言 歡迎來到“從代碼學習深度強化…

Android學習之Window窗口

Android Window機制學習筆記 在使用Window Flag實現界面全屏功能時&#xff0c;發現自身對Android Window機制缺乏系統認知&#xff0c;因此進行了專項學習與整理。 本文主要參考以下優質資料&#xff1a; Android的Window詳解Android官方Window文檔 Window基本概念 1. Win…

華為云 Flexus+DeepSeek 征文|搭建部署Dify-LLM推理引擎,賦能AI Agent智能體實現動態聯網搜索能力

華為云 Flexus 云服務器 X 實例專門為 AI 應用場景設計。它提供了強大的計算能力&#xff0c;能夠滿足 DeepSeek 模型以及后續搭建 AI Agent 智能體過程中對于數據處理和模型運行的高要求。在網絡方面&#xff0c;具備高速穩定的網絡帶寬&#xff0c;這對于需要頻繁聯網搜索信息…

Python 100個常用函數全面解析

Python 100個常用函數全面解析 1. 類型轉換函數 1.1 int() 將字符串或數字轉換為整數。 # 基本用法 int(123) # 123 int(3.14) # 3# 指定進制轉換 int(1010, 2) # 10 (二進制轉十進制) int(FF, 16) # 255 (十六進制轉十進制)# 臨界值處理 int() # ValueError: …

分享在日常開發中常用的ES6知識點【面試常考】

前言 在日常的業務開發中&#xff0c;可以熟悉運用掌握的知識點快速解決問題很重要。這篇分享JS相關的知識點&#xff0c;主要就是對數據的處理。 注意&#xff1a;本篇分享的知識點&#xff0c;只是起到一個拋磚引玉的作用&#xff0c;詳情的使用和更多的ES6知識點還請參考官…

CHI協議驗證中的異常及邊界驗證

CHI協議驗證中的異常及邊界驗證 針對 CHI 協議的錯誤注入工具、覆蓋率衡量方法及實際項目中的投入平衡 CHI 協議作為多核系統中復雜的緩存一致性協議,驗證其行為需要強大的工具和方法來執行錯誤注入和邊界條件測試,并衡量測試覆蓋率。以下詳細討論常用工具、覆蓋率評估方法及…

技術專欄|LLaMA家族——模型架構

LLaMA的模型架構與GPT相同&#xff0c;采用了Transformer中的因果解碼器結構&#xff0c;并在此基礎上進行了多項關鍵改進&#xff0c;以提升訓練穩定性和模型性能。LLaMA的核心架構如圖 3.14 所示&#xff0c;融合了后續提出的多種優化方法&#xff0c;這些方法也在其他模型&a…

電腦插入多塊移動硬盤后經常出現卡頓和藍屏

當電腦在插入多塊移動硬盤后頻繁出現卡頓和藍屏問題時&#xff0c;可能涉及硬件資源沖突、驅動兼容性、供電不足或系統設置等多方面原因。以下是逐步排查和解決方案&#xff1a; 1. 檢查電源供電問題 問題原因&#xff1a;多塊移動硬盤同時運行可能導致USB接口供電不足&#x…

Go 語言實現高性能 EventBus 事件總線系統(含網絡通信、微服務、并發異步實戰)

前言 在現代微服務與事件驅動架構&#xff08;EDA&#xff09;中&#xff0c;事件總線&#xff08;EventBus&#xff09; 是實現模塊解耦與系統異步處理的關鍵機制。 本文將以 Go 語言為基礎&#xff0c;從零構建一個高性能、可擴展的事件總線系統&#xff0c;深入講解&#…

npm ERR! @biomejs/biome@1.9.4 postinstall: `node scripts/postinstall.js`

npm install 報錯如下, npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @biomejs/biome@1.9.4 postinstall: `node scripts/postinstall.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the @biomejs/biome@1.9.4 postinstall script. npm ERR! This is pro…

APMPlus × veFaaS 一鍵開啟函數服務性能監控,讓函數運行全程可觀測

資料來源&#xff1a;火山引擎-開發者社區 近年來&#xff0c;無服務器架構&#xff08;Serverless&#xff09;的崛起讓開發者得以從基礎設施的復雜性中解放&#xff0c;專注于業務邏輯創新。但隨著采用率提升&#xff0c;新的問題開始出現——函數實例的短暫生命周期、動態變…

瑪哈特零件矯平機:精密制造中的平整度守護者

在精密制造、模具、沖壓、鈑金加工、汽車零部件、航空航天以及電子設備等眾多工業領域&#xff0c;零件的平整度&#xff08;Flatness&#xff09;是一項至關重要的質量指標。微小的翹曲、扭曲或彎曲都可能導致裝配困難、功能失效、外觀缺陷甚至影響整機性能。為了消除零件在加…

std::make_shared簡化智能指針 `std::shared_ptr` 的創建過程,并提高性能(減少內存分配次數,提高緩存命中率)

std::make_shared 是 C 標準庫中的一個函數模板&#xff0c;用于簡化智能指針 std::shared_ptr 的創建過程。引入 std::make_shared 的主要原因是提高代碼的安全性、性能和可讀性。以下是詳細分析&#xff1a; 1. 安全性提升 避免顯式調用 new 導致的錯誤 在不使用 std::make…

JDK版本如何絲滑切換

一句話總結 》》》步驟分為&#xff1a; 下載對應JDK配置環境變量 下載JDK 如何下載JDK這里不必多提&#xff0c;提出一點&#xff0c;就是多個版本的JDK最好放在一個文件夾里&#xff08;忽略我的java文件夾&#xff0c;這里都是不同的jdk版本&#xff09;&#xff1a; 配置環…

Rust 通用代碼生成器:蓮花,紅蓮嘗鮮版三十六,啞數據模式圖片初始化功能介紹

Rust 通用代碼生成器&#xff1a;蓮花&#xff0c;紅蓮嘗鮮版三十六&#xff0c;啞數據模式圖片初始化功能介紹 Rust 通用代碼生成器蓮花&#xff0c;紅蓮嘗鮮版三十六。支持全線支持圖片預覽&#xff0c;可以直接輸出帶圖片的啞數據模式快速原型。啞數據模式和枚舉支持圖片。…

45. Jump Game II

目錄 題目描述 貪心 題目描述 45. Jump Game II 貪心 正向查找可到達的最大位置 時間復雜度O(n) class Solution { public:int jump(vector<int>& nums) {int n nums.size();if(n 1)return 0;int cur_cover 0;int cover 0;int res 0;for(int i 0;i < …