摘要:要顯示的錯(cuò)誤提示則可以即可。寫在最后的以上三點(diǎn)已經(jīng)完全覆蓋了所有表單驗(yàn)證的情況,可以實(shí)現(xiàn)非常復(fù)雜的驗(yàn)證。正式基于這些原因,我堅(jiān)信是正確的選擇。
前言
老是遇到一些朋友問一些element-ui組件使用相關(guān)的基礎(chǔ)問題,因?yàn)楣俜轿臋n上并沒有提供所有瑣碎的功能代碼demo。從這里開始我會(huì)根據(jù)我實(shí)際遇到的問題記錄一些常見的官方文檔沒有詳述的功能代碼,供給大家拓展思路。
1. 以中國(guó)大陸手機(jī)號(hào)驗(yàn)證為例
// 這是組價(jià)的代碼// 這是rules的代碼 mobile: [ { validator: validateMobile, trigger: "blur" }, { required: true, message: "請(qǐng)輸入手機(jī)號(hào)", trigger: "blur" }, { pattern: /^1[34578]d{9}$/, message: "目前只支持中國(guó)大陸的手機(jī)號(hào)碼" } ],
在element-ui的源碼中搜索blur,你會(huì)很容易看到除了blur 還有focus、input,非常貼心基本滿足了表單驗(yàn)證的入門需求。
2. 表單局部提交后端驗(yàn)證
在一些輸入項(xiàng)目較多的表單提交中,比如說注冊(cè)時(shí)填寫的用戶名,通常我們會(huì)對(duì)用戶名是否重復(fù)進(jìn)行驗(yàn)證,這是就需要調(diào)用服務(wù)來驗(yàn)證,這種略顯復(fù)雜的驗(yàn)證,就需要自定義驗(yàn)證規(guī)則來實(shí)現(xiàn)。看下面的代碼:
// 注意validatePass是屬于data的,但不在return中。 data () { let validatePass = (rule, value, callback) => { if (value.length >= 8) { let params = { "account": value } axios.post("localhost:8080/verifyUserAccount", params) .then(function (response) { if (response.data.err) { callback(response.data.msg) } else { callback() } }) .catch(function () { callback(new Error("服務(wù)異常")) }) } else { callback() } } //這是驗(yàn)證規(guī)則,當(dāng)然了你也可以同時(shí)使用基本的驗(yàn)證規(guī)則 account: [ { validator: validatePass , trigger: "blur" } ]
注意:validatePass 自定義規(guī)則中每個(gè)執(zhí)行流程中都必須附帶callback(),這樣才能明確通過驗(yàn)證的情況下去掉輸入框上的loading。要顯示的錯(cuò)誤提示則可以new Error(“xxxx”)即可。
3. 綜合來看
通常可以把所有規(guī)則都寫在自定義的規(guī)則中,即可實(shí)現(xiàn)較為復(fù)雜的驗(yàn)證,實(shí)際上我們可以再validatePass里面調(diào)用根實(shí)例下所有data methods...,一個(gè)很簡(jiǎn)單的例子是實(shí)現(xiàn)兩次輸入的密碼是否相同的驗(yàn)證,看下面的代碼:
let validatePass = (rule, value, callback) => { if (value === "") { callback(new Error("請(qǐng)?jiān)俅屋斎朊艽a")) } else if (value !== this.ruleForm.password) { callback(new Error("兩次輸入密碼不一致!")) } else { callback() } }
就這么簡(jiǎn)單就可以實(shí)現(xiàn)非vuejs情況下是非啰嗦的驗(yàn)證。而且樣式也不會(huì)很丑,當(dāng)然了任然可以選擇自定義樣式。這個(gè)以后再記錄。
4. 寫在最后的
以上三點(diǎn)已經(jīng)完全覆蓋了所有表單驗(yàn)證的情況,可以實(shí)現(xiàn)非常復(fù)雜的驗(yàn)證。正式基于這些原因,我堅(jiān)信element-ui是正確的選擇。我將會(huì)繼續(xù)寫一些剪短的文章補(bǔ)充文檔的遺漏。同時(shí)如果你也跟我一樣喜歡element-ui歡迎跟我探討,我們新建了一個(gè)qq群478694438![圖片描述][1],方便大家交流。最后喊一下口號(hào):不拘泥于原理,完全立足于實(shí)現(xiàn)!
5. 另
文中涉及到的源碼我將會(huì)上傳到討論群中,不足之處持續(xù)更進(jìn),共同探討。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/88463.html
摘要:先看這個(gè)值即為判斷顯示展開還是收縮狀態(tài)的開關(guān)。這樣就實(shí)現(xiàn)了展開狀態(tài)下的菜單。如果有時(shí)間的話,我會(huì)把這個(gè)系列寫完,知道朋友們能獨(dú)立開發(fā)一個(gè)完整的的單頁(yè)面后臺(tái)管理程序。 涉及到路由,權(quán)限等等相關(guān)內(nèi)容的部分,跟本文主旨關(guān)系不大,所以我將會(huì)在另外一篇文章中詳述,混在一起的話內(nèi)容太多了 基于element-ui的左側(cè)可伸縮的菜單通過vuejs來開發(fā)支持展開收縮的菜單是非常簡(jiǎn)單的,只需要v-i...
摘要:毫無(wú)疑問,設(shè)計(jì)模式于己于他人于系統(tǒng)都是多贏的設(shè)計(jì)模式使代碼編寫真正工程化設(shè)計(jì)模小書前端掘金這是一本關(guān)于的小書。 JavaScript 常見設(shè)計(jì)模式解析 - 掘金設(shè)計(jì)模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。毫無(wú)疑問,設(shè)計(jì)模式于己于他人于系統(tǒng)都是多贏的;設(shè)計(jì)...
摘要:介紹是一個(gè)可以通過生成具有動(dòng)態(tài)渲染數(shù)據(jù)收集驗(yàn)證和提交功能的表單生成器。并且支持生成任何組件。結(jié)合內(nèi)置種常用表單組件和自定義組件,再?gòu)?fù)雜的表單都可以輕松搞定。 介紹 form-create 是一個(gè)可以通過 JSON 生成具有動(dòng)態(tài)渲染、數(shù)據(jù)收集、驗(yàn)證和提交功能的表單生成器。并且支持生成任何 Vue 組件。結(jié)合內(nèi)置17種常用表單組件和自定義組件,再?gòu)?fù)雜的表單都可以輕松搞定。 文檔 | git...
摘要:而則是用到到指令結(jié)合的方式去生成,批量生成元素。表格操作列自定義渲染的時(shí),使用的是的函數(shù),直接在中插入對(duì)應(yīng)模板表格分頁(yè)都需要引入分頁(yè)組件配合使用兩者總體比較,要比簡(jiǎn)潔許多。 element VS iview(最近項(xiàng)目UI框架在選型 ,做了個(gè)分析, 不帶有任何利益相關(guān))主要從以下幾個(gè)方面來做對(duì)比使用率(npm 平均下載頻率,組件數(shù)量,star, issue…)API風(fēng)格打包優(yōu)化與設(shè)計(jì)師友...
閱讀 1225·2021-11-11 16:54
閱讀 1738·2021-10-13 09:40
閱讀 932·2021-10-08 10:05
閱讀 3498·2021-09-22 15:50
閱讀 3701·2021-09-22 15:41
閱讀 1782·2021-09-22 15:08
閱讀 2338·2021-09-07 10:24
閱讀 3570·2019-08-30 12:52