ElementUI表單驗證指南

ElementUI 是一套基于 Vue.js 的組件庫,提供了豐富的表單組件和驗證功能。其表單驗證通過 el-form 組件結合 rules 規則實現,支持同步和異步驗證。

基本表單驗證實現

在 ElementUI 中,表單驗證需要配置 el-formrules 屬性,并為每個 el-form-item 指定 prop 屬性以關聯驗證規則。

<template><el-form :model="form" :rules="rules" ref="formRef"><el-form-item label="用戶名" prop="username"><el-input v-model="form.username"></el-input></el-form-item><el-form-item label="密碼" prop="password"><el-input v-model="form.password" type="password"></el-input></el-form-item><el-form-item label="手機號" prop="mobile"><el-input v-model="form.mobile" ></el-input></el-form-item><el-form-item label="身份證" prop="identityCard"><el-input v-model="form.identityCard" ></el-input></el-form-item><el-form-item label="車牌號" prop="carId"><el-input v-model="form.carId" ></el-input></el-form-item><el-form-item><el-button type="primary" @click="submitForm">提交</el-button></el-form-item></el-form>
</template><script>
export default {data() {return {form: {username: '',password: ''},rules: {username: [{ required: true, message: '請輸入用戶名', trigger: 'blur' },{ min: 3, max: 10, message: '長度在 3 到 10 個字符', trigger: 'blur' },{ pattern: /^[\u4E00-\u9FA5]+$/,  message: '用戶名只能為中文'}],password: [{ required: true, message: '請輸入密碼', trigger: 'blur' },{ pattern: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/, message: '密碼必須包含字母和數字,且至少8位', trigger: 'blur' },{ pattern: /^(\w){6,20}$/, message: '只能輸入6-20個字母、數字、下劃線'},{pattern: /[a-z]\w{3,7}/,message: '必須是4-8位的數字英文下畫線,以字母開頭'},],mobile:[{ required: true, message: '請輸入手機號碼', trigger: 'blur' },{validator:function(rule,value,callback){if(/^1[34578]\d{9}$/.test(value) == false){callback(new Error("請輸入正確的手機號"));}else{callback();}}, trigger: 'blur'}],//   pattern: /^1[34578]\d{9}$/, message: '目前只支持中國大陸的手機號碼' }identityCard:[{ required: true, message: '請輸入身份證ID', trigger: 'blur'},{ pattern:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, message: '你的身份證格式不正確' }],carId:[{required: true, message: '請輸入車牌號', trigger: 'blur'}, {pattern:/(^[\u4E00-\u9FA5]{1}[A-Z0-9]{6}$)|(^[A-Z]{2}[A-Z0-9]{2}[A-Z0-9\u4E00-\u9FA5]{1}[A-Z0-9]{4}$)|(^[\u4E00-\u9FA5]{1}[A-Z0-9]{5}[掛學警軍港澳]{1}$)|(^[A-Z]{2}[0-9]{5}$)|(^(08|38){1}[A-Z0-9]{4}[A-Z0-9掛學警軍港澳]{1}$)/, message: '常規格式:晉B12345'},],}}},methods: {submitForm() {this.$refs.formRef.validate(valid => {if (valid) {alert('表單驗證通過')} else {return false}})}}
}
</script>

自定義驗證規則

可以通過自定義驗證函數實現更復雜的驗證邏輯。驗證函數需要返回 callbackPromise

data() {const validateAge = (rule, value, callback) => {if (!value) {return callback(new Error('年齡不能為空'))}setTimeout(() => {if (!Number.isInteger(+value)) {callback(new Error('請輸入數字值'))} else {if (value < 18) {callback(new Error('必須年滿18歲'))} else {callback()}}}, 1000)}return {rules: {age: [{ validator: validateAge, trigger: 'blur' }]}}
}

表單重置和清除驗證

ElementUI 提供了表單重置和清除驗證狀態的方法。

methods: {resetForm() {this.$refs.formRef.resetFields()},clearValidate() {this.$refs.formRef.clearValidate()}
}

動態表單驗證

對于動態增減的表單項,需要特別注意驗證規則的更新。ElementUI 支持動態添加和移除驗證規則。

methods: {addItem() {this.form.items.push({ value: '' })this.rules.items.push({ value: [{ required: true, message: '請輸入值', trigger: 'blur' }]})}
}

異步驗證

某些場景需要異步驗證,如檢查用戶名是否已存在。可以通過返回 Promise 實現異步驗證。

data() {const checkUsername = (rule, value, callback) => {return new Promise((resolve, reject) => {if (!value) {return reject(new Error('請輸入用戶名'))}setTimeout(() => {if (value === 'admin') {reject(new Error('用戶名已存在'))} else {resolve()}}, 1000)})}return {rules: {username: [{ validator: checkUsername, trigger: 'blur' }]}}
}

表單驗證事件

ElementUI 表單提供多種驗證事件,可以監聽表單和表單項的驗證狀態變化。

<el-form @validate="onValidate"@submit.native.prevent><el-form-item @change="onFieldChange"></el-form-item>
</el-form>

驗證規則參數詳解

ElementUI 驗證規則支持多種配置參數:

  • required: 是否為必填項
  • message: 驗證失敗時的提示信息
  • trigger: 觸發驗證的事件,如 blurchange
  • validator: 自定義驗證函數
  • pattern: 正則表達式驗證
  • min/max: 最小/最大長度或值
rules: {email: [{ type: 'email', message: '請輸入正確的郵箱地址', trigger: ['blur', 'change'] }],phone: [{ pattern: /^1[3-9]\d{9}$/, message: '請輸入正確的手機號', trigger: 'blur' }]
}

限制表單輸入類型

正整數

<el-input v-model="params.insAmt" maxlength="10" oninput="value=value.replace(/\D/g, '')"><template slot="append">萬元</template></el-input>

大于零的數

 <el-input v-model="params.intendedPrice" maxlength="10"oninput="value=value.replace(/^\D*([0-9]\d*\.?\d{0,4})?.*$/,'$1')"></el-input>

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

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

相關文章

通過ansible playbook創建azure 資源

安裝 Ansible 在 macOS 上 Ansible 可以通過多種方式在 macOS 上安裝,推薦使用 pip 或 Homebrew。 使用 Homebrew 安裝 Ansible 運行以下命令: brew install ansible使用 pip 安裝 Ansible 確保 Python 已安裝(macOS 通常自帶 Python),然后運行: pip install ansible…

Spring框架學習day4--Spring集成Mybatis(IOC)

Spring集成Mybatis1.添加jar包&#xff08;pom.xml&#xff09;2.配置sqlSessionFactiory&#xff08;spring.xml)3.再service類中注入Dao代理接口4.測試類5文件結構 Spring集成Mybatis Spring集成Mybatis其核心是將SqlSessionFactory交由Spring管理&#xff0c;并由 Spring管理…

可靠數據傳輸原理

目錄 構造可靠數據傳輸協議 一、rdt1.0&#xff1a;理想信道下的可靠傳輸 核心假設與功能 二、rdt 2.0&#xff1a;帶差錯檢測的停等協議 核心假設與功能 三、rdt 2.1&#xff1a;修復 ACK/NAK 不可靠性 核心改進 四、rdt 2.2&#xff1a;純 ACK 實現的可靠傳輸 核心改…

Python Day33

Task&#xff1a; MLP神經網絡的訓練 1.PyTorch和cuda的安裝 2.查看顯卡信息的命令行命令&#xff08;cmd中使用&#xff09; 3.cuda的檢查 4.簡單神經網絡的流程 a.數據預處理&#xff08;歸一化、轉換成張量&#xff09; b.模型的定義 i.繼承nn.Module類 ii.定義每一個層 iii…

社群分享:義烏|杭州電商|店群賣家,私域魚塘運營的排單系統開源|私域魚塘運營|返款軟件開源

熟悉東哥的朋友都知道&#xff0c;我自己也運營一個電商社群&#xff0c;主要是針對玩私域|魚塘的電商玩家。 在當前電商環境下&#xff0c;社群分享型電商、店群賣家及私域魚塘運營者&#xff0c;面臨著日益復雜的訂單管理和客服調度問題。傳統的人工處理不僅效率低…

github雙重認證怎么做

引言 好久沒登陸github了&#xff0c; 今天登陸github后&#xff0c;提醒進行2FA認證。 查看了github通知&#xff0c;自 2023 年 3 月起&#xff0c;GitHub 要求所有在 GitHub.com 上貢獻代碼的用戶啟用一種或多種形式的雙重身份驗證 (2FA)。 假如你也遇到這個問題&#xf…

Linux Docker 安裝oracle19c數據庫教程

Oracle 19c 是甲骨文公司&#xff08;Oracle Corporation&#xff09;發布的一款關系型數據庫管理系統&#xff08;RDBMS&#xff09;&#xff0c;屬于 Oracle Database 19c 版本。它是 Oracle 12c 和 18c 系列的后續版本&#xff0c;提供了多個重要的功能改進和新特性&#xf…

jenkins報錯java.lang.OutOfMemoryError: Java heap space

報錯信息 2025-05-27 09:17:16.2340000 [id38] WARNING j.u.ErrorLoggingScheduledThreadPoolExecutor#afterExecute: failure in task not wrapped in SafeTimerTask java.lang.OutOfMemoryError: Java heap spaceat java.base/java.lang.StringUTF16.compress(StringUTF16.j…

【Bug】定時任務中 Jpa Save 方法失效

【Bug】定時任務中 Jpa Save 方法失效 首先說一下問題&#xff0c;在定時任務中調用 jpa 的 save 方法沒有效果&#xff0c;但是通過外界調用&#xff0c;比如 controller 中注入 service 來調用是可以的&#xff0c;真是巨巨巨離譜&#xff0c;我被折磨了好幾天。 我這個問題…

【Redis】熱點key問題,的原因和處理,一致性哈希,刪除大key的方法

熱點 Key 指單個 Key 被高并發訪問&#xff08;如爆款商品&#xff09;&#xff0c;導致 Redis 壓力驟增。解決方案應針對 “單個 Key 高并發”&#xff1a; 分片緩存&#xff1a;將熱點 Key 分散到不同 Redis 節點&#xff08;如按一致性哈希算法分片&#xff09;。本地緩存&…

通過遠程桌面連接Windows實例提示“出現身份驗證錯誤,無法連接到本地安全機構”錯誤怎么辦?

本文介紹通過遠程桌面連接Windows實例提示“出現身份驗證錯誤無法連接到本地安全機構”錯誤的解決方案。 問題現象 通過本地電腦內的遠程桌面連接Windows實例提示“出現身份驗證錯誤&#xff0c;無法連接到本地安全機構”錯誤。 問題原因 導致該問題的可能原因如下&#x…

[python] argparse怎么指定bool類型?

前述 最近在寫腳本的時候想要實現一個if 操作&#xff0c;通過用戶輸入。確定要不要啟用某個語句。 非常自然的就是使用python的argparse包&#xff0c;但是發現了一個陷阱&#xff0c;記錄下。 陷阱 argparse.ArgumentParser() 可以指定輸入類型&#xff0c;我可以設定為bo…

Rust 學習筆記:迭代器

Rust 學習筆記&#xff1a;迭代器 Rust 學習筆記&#xff1a;迭代器Iterator trait 和 next 方法使用迭代器的方法生成其他迭代器的方法使用閉包捕獲它們的環境 Rust 學習筆記&#xff1a;迭代器 在 Rust 中&#xff0c;迭代器負責遍歷每個項的邏輯。迭代器是懶惰的&#xff0…

【深度剖析】義齒定制行業數字化轉型模式創新研究(上篇2:痛點和難點分析)

數字化轉型正在重塑義齒行業的生態格局,但也面臨技術融合與模式變革的深層挑戰。當前,義齒定制行業正處于從傳統手工制造向全流程數字化制造轉型的關鍵階段。3D掃描、CAD/CAM(計算機輔助設計與制造)、3D打印等技術的廣泛應用,顯著提升了義齒制作的精度和效率。傳統石膏模型…

window安裝nginx

步驟1&#xff1a;下載Nginx for Windows? 訪問Nginx官網下載頁面&#xff1a;https://nginx.org/en/download.html 在??Stable version??&#xff08;穩定版&#xff09;下找到Windows版本&#xff0c;點擊下載.zip文件&#xff08;如 nginx-1.28.0.zip&#xff09; 步…

氣象算法工程師學習路徑

目錄 &#x1f324;? 氣象學與數值預報基礎課程&#x1f916; 氣象人工智能與數據分析課程&#x1f4d8; 進階與實戰課程推薦&#x1f9ed; 學習建議與路徑規劃 如果希望成為一名氣象算法工程師&#xff0c;并尋找深入淺出、理論與實踐結合的學習資源&#xff0c;以下是為你精…

回調函數的理解

int yuxiangrousi 0; // 全局變量&#xff1a;魚香肉絲&#xff08;醬油量&#xff09;// 回調函數&#xff1a;媽媽處理醬油&#xff08;將醬油加入魚香肉絲&#xff09; void mother_callback(int new_jiangyou) {yuxiangrousi new_jiangyou; // 把醬油放進魚香肉絲 }// 孩…

多部手機連接同一wifi的ip一樣嗎?如何更改ip

通常情況下&#xff0c;多部手機連接同一個WiFi時&#xff0c;它們的IP地址是各不相同的&#xff08;在局域網內&#xff09;。但是&#xff0c;從互聯網&#xff08;外網&#xff09;的角度看&#xff0c;它們共享同一個公網IP地址。讓我詳細解釋一下&#xff0c;并說明如何更…

環境溫度通過H2A.Zub和H3K27me3動態調控擬南芥細胞命運決定

2025年4月22日&#xff0c;中國科學院遺傳與發育生物學研究所肖軍研究組在Developmental Cell在線發表了題為Dynamic control of H2A.Zub and H3K27me3 by ambient temperature during cell fate determination in Arabidopsis的研究論文&#xff0c;本研究綜合運用ChIP-seq、C…

2024 吉林 CCPC

文章目錄 2024 吉林 CCPCL. Recharge&#xff08;思維、分配&#xff09;G. Platform Game(模擬)E. Connect Components (排序、思維)D. Parallel Lines 2024 吉林 CCPC 題目鏈接&#xff1a; Dashboard - The 2024 CCPC National Invitational Contest (Changchun) , The 17…