vue繞過rules自定義編寫動態校驗

今天犯了個低級錯誤,雖然走了很多彎路,但這個過程還是值得記錄一下

例子如下,有兩個輸入框:

第一個是套餐選擇下拉框,可以下拉選擇三個內容

第二個要根據上面的套餐選擇三個選項來決定怎么顯示,使用v-if(第一個下拉框的值來做條件顯示)

(1)如果套餐選擇招牌冰淇淋,第二個輸入框就是招牌冰淇淋下拉框,

就以下拉框的形式顯示口味

(2)如果套餐選擇小吃,第二個輸入框就是小吃輸入框,

就讓客戶自己填寫什么小吃

(2)如果套餐選擇冷飲,第二個輸入框就是冷飲輸入框,

就讓客戶自己填寫什么冷飲

然后無論第一個套餐選擇選哪個選項,都要對第二個框進行非空、長度規則等校驗,剩下的兩個沒選的就不做校驗,這里其實v-if取了第一個下拉框的值來對第二個輸入框做條件顯示的時候,另外兩個就不會顯示,即不走rules,但我沒把第二個輸入框的規則寫在rules里面,自己做了一個驗證規則

具體邏輯就是在確定按鈕提交表單時,調取this.validateForm()方法去校驗一下第一下選的是哪個選項,再決定去校驗后面的哪個輸入框

核心校驗代碼:?

?

詳細代碼:?

<!--第一個下拉框-->
<el-form-item label="套餐選擇" prop="setMealType"><el-select v-model="form.setMealType" placeholder="請選擇變更類型" size="small" clearable><el-option label="招牌冰淇淋" value="1"></el-option><el-option label="小吃" value="2"></el-option><el-option label="冷飲" value="3"></el-option></el-select>
</el-form-item>
<!--        第二個輸入框(1號)-->
<el-form-item label="招牌冰淇淋" prop="newVehicleColour" v-if="form.setMealType === '1'"><el-select v-model="form.newVehicleColour" placeholder="請選擇冰淇淋口味" filterable clearable size="small"><el-option label="香草冰淇淋" value="1"></el-option><el-option label="牛奶紅棗" value="2"></el-option><el-option label="薄荷香芋" value="3"></el-option></el-select><div><span v-if="errors.newVehicleColour" class="err">口味不能為空!</span></div>
</el-form-item><!--        第二個輸入框(2號)-->
<el-form-item label="小吃" prop="newMotornumber" v-if="form.setMealType === '2'"><el-input v-model="form.newMotornumber"  placeholder="請輸入小吃" maxlength="30" ></el-input><span v-if="errors.newMotornumber" class="err">小吃不能為空!</span>
</el-form-item><!--        第二個輸入框(3號)-->
<el-form-item label="冷飲" prop="newBatteryNum" v-else-if="form.setMealType === '3'"><el-input v-model="form.newBatteryNum" placeholder="請輸入冷飲" maxlength="30" /><span v-if="errors.newBatteryNum" class="err">冷飲不能為空!</span>
</el-form-item>

?data和rules:(data聲明errors , rules僅對第一個輸入框校驗)

data() {return {// 遮罩層loading: true,//表單參數form: {},// 錯誤信息errors: {},// 表單校驗rules: {changeType: [{required: true,message: "請選擇套餐類型",trigger: "blur"}],}};},

表單重置:(將this.errors置空)

 // 表單重置reset() {this.form = {id: null,......createBy: null,createTime: null,updateBy: null,updateTime: null,remark: null};this.errors = {};this.resetForm("form");},

校驗規則:

// 自定義校驗方法validateField(field) {this.errors[field] = '';if (!this.form[field]) {this.errors[field] = `${field} 不能為空!`;}},// 校驗所有字段validateForm() {this.errors = {};if (this.form.changeType === '1') {this.validateField('newVehicleColour');} else if (this.form.changeType === '2') {this.validateField('newMotornumber');} else if (this.form.changeType === '3') {this.validateField('newBatteryNum');}// 檢查是否有錯誤for (const key in this.errors) {if (this.errors[key]) {// this.$message.error(this.errors[key]);return false;}}return true;},

重置按鈕:

 /** 重置按鈕操作 */resetQuery() {this.errors = {};this.resetForm("queryForm");this.handleQuery();},

表單提交按鈕:

 /** 提交按鈕 */submitForm() {if (this.validateForm()) {// 表單驗證通過console.log('表單驗證通過', this.form);this.$refs["form"].validate(valid => {if (valid) {if (this.form.id != null) {update(this.form).then(response => {this.$modal.msgSuccess("修改成功");this.open = false;this.getList();});} else {add(this.form).then(response => {this.$modal.msgSuccess("新增成功");this.open = false;this.getList();});}}});// 這里可以添加提交表單的邏輯} else {// 表單驗證失敗console.log('規則驗證失敗', this.errors);}},

自定義提示語樣式

<style>.err {color: red;font-size: 12px;
}
</style>

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

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

相關文章

數字化招聘系統如何幫助企業實現招聘效率翻倍提升?

眾所周知&#xff0c;傳統的招聘方式已經難以滿足現代企業對人才的需求&#xff0c;而數字化招聘系統的出現&#xff0c;為企業提供了全新的解決方案。通過數字化招聘系統&#xff0c;企業可以自動化處理繁瑣的招聘流程&#xff0c;快速篩選合適的候選人&#xff0c;從而大幅提…

短視頻矩陣源碼開發部署全流程解析

在當今的數字化時代&#xff0c;短視頻已成為人們娛樂、學習和社交的重要方式。短視頻矩陣系統的開發與部署&#xff0c;對于希望在這一領域脫穎而出的企業和個人而言&#xff0c;至關重要。本文將詳細闡述短視頻矩陣源碼的開發與部署流程&#xff0c;并附上部分源代碼示例&…

華為云云原生中間件DCS DMS 通過中國信通院與全球IPv6測試中心雙重能力檢測

近日&#xff0c;中國信息通信研究院&#xff08;以下簡稱“中國信通院”&#xff09;與全球IPv6測試中心相繼宣布&#xff0c;華為云的分布式緩存服務&#xff08;Distributed Cache Service&#xff0c;簡稱DCS&#xff09;和分布式消息服務&#xff08;Distributed Message …

關閉WPS在線功能資源和功能推薦

Kingsoft\WPS Office\12.1.0.18912\office6 選擇 【高級】 點擊 【確定】

Polars數據聚合與旋轉實戰教程

在這篇博文中&#xff0c;我們的目標是解決數據愛好者提出的一個常見問題&#xff1a;如何有效地從Polars DataFrame中創建匯總視圖&#xff0c;以便在不同時間段或類別之間輕松進行比較。我們將使用一個實際的數據集示例來探索實現這一目標的各種方法。 Polars簡介 Polars 是…

2024154讀書筆記|《帶著詩歌上街去》——我不長葉子,不開花,也不必要什么結果

2024154讀書筆記|《帶著詩歌上街去》——我不長葉子&#x1f33f;&#xff0c;不開花&#x1f33c;&#xff0c;也不必要什么結果 《帶著詩歌上街去》作者隔花人&#xff0c;作者很有巧思&#xff0c;在拍攝的照片上做詩&#xff0c;詩不是很有感覺&#xff0c;但是在墻上、風景…

建立基于TCP的客戶端和服務端

函數介紹&#xff1a; 1.socket() 作用&#xff1a;創建套接字 domain: AF_INET&#xff1a;IPv4 Internet 協議族。AF_INET6&#xff1a;IPv6 Internet 協議族。AF_UNIX&#xff1a;Unix 域協議族&#xff0c;用于在同一臺主機上的進程間通信。 type: SOCK_STREAM&#xff1a…

CNCF云原生生態版圖-分類指南(三)- 運行時

CNCF云原生生態版圖-分類指南&#xff08;三&#xff09;- 運行時 CNCF云原生生態版圖-分類指南三、運行時&#xff08;Runtime&#xff09;&#xff08;一&#xff09;云原生存儲&#xff08;Cloud Native Storage&#xff09;1. 是什么&#xff1f;2. 解決什么問題&#xff1…

機器學習經典算法

機器學習經典算法學習和分享。 k近鄰算法 線性回歸 梯度下降法 PCA主成分分析法 多項式回歸 邏輯回歸 支撐向量機SVM 決策樹 隨機森林 評價分類指標

MVC基礎——市場管理系統(三)Clean Architecture

文章目錄 項目地址五、Clean Architecture5.1 user cage driven5.1.1創建CoreBusiness 5.2 創建UseCases5.2.1 創建CategoriesUseCases1. 創建VeiwCategoriesUseCase獲取所有Cagegory 5.2.2. 實現ICategoryRepository接口3. 實現獲取所有Category的方法4. 實現獲取一個Cagegory…

手機上和電腦上都能觀看的翻頁電子書是如何制作的?

想知道手機上和電腦上都能觀看的翻頁電子書是都是如何制作的&#xff1f; 想知道這樣的電子書是怎樣呈現出來的&#xff1f; 那收藏這篇文章&#xff0c;我來跟大家說說該如何實現。 操作方法 一、登錄FLBOOK 二、開始制作&#xff0c;有多種創建方式&#xff0c;分別是&…

ABAP時間戳與日期時間轉換及時區處理

一、時間戳轉換為日期時間 1. 基本轉換 CONVERT TIME STAMP <fs_back>-lastchangedatetime TIME ZONE sy-zonloINTO DATE DATA(lv_date)TIME DATA(lv_time).2. 解決8小時時差問題的方案 方案1&#xff1a;直接使用UTC時區&#xff08;推薦&#xff09; CONVERT TIME …

Java 實現給pdf文件指定位置蓋章功能

Java 實現給pdf文件指定位置蓋章功能 開發中遇到一個需求, 需要給用戶上傳的的pdf文件, 指定位置上蓋公章的功能, 經過調研和對比, 最終確定實現思路. 這里是使用pdf文件中的關鍵字進行章子的定位, 之所以這樣考慮是因為如果直接寫死坐標的話, 可能會出現因pdf大小, 縮放, 蓋章…

ASP.NET Core API + MySql

環境 數據庫&#xff1a; mysql8.0 后端&#xff1a; vs2022 ASP.NET Core API .net 8 前端&#xff1a; Hbuilderx bootstrap 5.3.0 jquery v3.7.1 bootstrap-table 1.23.5 創建項目 添加資源包 AutoMapper Microsoft.EntityFrameworkCore.Tools 8.0.0 Pomelo.EntityFramew…

RFDiffusion 計算鍵角函數get_ang解讀

get_ang 函數&#xff08;kinematics.py包中&#xff09;計算三組原子 a,b,c 所形成的平面角&#xff08;planar angle&#xff09;&#xff0c;即 b 為頂點&#xff0c; a,b,c 所確定的角度。 源代碼&#xff1a; def get_ang(a, b, c):"""calculate planar …

Bananna Pi開源社區聯合矽昌通信打造開源的低成本Wifi5路由器

香蕉派 BPI-Wifi5 路由器采用矽昌SF19A2890S2芯片方案設計。它是一款高性能無線路由器&#xff0c;適用于小微企業、家庭和其他網絡環境。Banana Pi開源社區提供整體解決方案。所有代碼開源&#xff0c;用戶可以在上面自由開發自己的應用。 Banana Pi wifi5 路由器github代碼: …

圖像融合算法筆記2024 CDTNet

目錄 ControlCom-Image-Composition CDTNet-High-Resolution-Image-Harmonization 依賴項: trilinear 推理代碼ok: ControlCom-Image-Composition diffusesion https://github.com/bcmi/ControlCom-Image-Composition CDTNet-High-Resolution-Image-Harmonization

item2 for macos

安裝Item2 brew install iterm2 查看終端類型 cat /etc/shells Mac OS X 10.15 已經將默認的shell從Bash換成了zsh&#xff0c;所以不用安裝&#xff0c;10.15以前的可以使用下面的命令進行安裝 brew install zsh 安裝Oh My ZSH # curl sh -c "$(curl -fsSL https://ra…

https證書生成、linux 生成https證書、nginx 配置https證書

1. 檢查 Certbot 是否已安裝 which certbot 2. 安裝 Certbot 2.1啟用 EPEL 倉庫&#xff08;如果尚未啟用&#xff09;&#xff1a; sudo yum install epel-release 2.2 安裝 Certbot 和 Nginx 插件&#xff1a; sudo yum install certbot python3-certbot-nginx 2.3驗證安…

Pytest-Bdd-Playwright 系列教程(14):Docstring 參數

Pytest-Bdd-Playwright 系列教程&#xff08;14&#xff09;&#xff1a;Docstring 參數 前言一、什么是docstring?二、基本語法三、主要特點四、實際例子五、注意事項六、使用建議總結 前言 在自動化測試的過程中&#xff0c;我們經常需要處理復雜的測試數據或需要輸入多行文…