Vue引用vee-validate插件表單驗(yàn)證問題(cdn方式引用)
引用vee-validate插件表單驗(yàn)證(cdn方式引入)
之前用的是webpack打包工具寫的項(xiàng)目,后來需求改成靜態(tài)頁面的方式,所以又要把一些引入方式改過來,這就是前端麻煩的地方。
網(wǎng)上也有很多npm引入方式的,主要是老版本和新版本vee-validate引起的問題(特別是中文錯誤提示的引用問題),我這里寫一下關(guān)于cdn方式引入,中文包配置的問題。
一、 CDN方式(官網(wǎng))
<!-- jsdelivr cdn --> <script src="https://cdn.jsdelivr.net/npm/vee-validate@latest/dist/vee-validate.js"></script> <!-- unpkg --> <script src="https://unpkg.com/vee-validate@latest"></script>
二、 結(jié)合Vue使用
Vue.use(VeeValidate, { events: 'change' //這里的events是觸發(fā)事件,例如失去焦點(diǎn)驗(yàn)證,我這里用的是輸入改變校驗(yàn) });
Vue引入這里就不詳解了,不知道的自行百度。
網(wǎng)上有很多配置參數(shù),有需要的可以去查一下,我這里沒用到就沒寫了,網(wǎng)上有些也是花里胡哨的,沒必要,只是做個驗(yàn)證,搞得腦子疼。
不加參數(shù)就是這樣:
Vue.use(VeeValidate);
三、使用中文錯誤提示
先下載中文包
https://cdn.bootcss.com/vee-validate/2.2.15/locale/zh_CN.js
沒辦法,暫時沒有找到新版本zh_CN.json的使用方式,cdn引入方式就用這個中文提示包就行了,webpack項(xiàng)目的不會存在這個問題。
之后再調(diào)用即可:
VeeValidate.Validator.localize('zh_CN');
如果不使用這個包的可以引用一下代碼:
VeeValidate.Validator.localize({ zh_CN: { messages: { _default: (field) => `${field}的值無效`, after: (field, [target, inclusion]) => `${field}必須在${target}之后${inclusion ? '或等于' + target : ''}`, alpha: (field) => `${field}只能包含字母字符`, alpha_dash: (field) => `${field}能夠包含字母數(shù)字字符、破折號和下劃線`, alpha_num: (field) => `${field}只能包含字母數(shù)字字符`, alpha_spaces: (field) => `${field}只能包含字母字符和空格`, before: (field, [target, inclusion]) => `${field}必須在${target}之前${inclusion ? '或等于' + target : ''}`, between: (field, [min, max]) => `${field}必須在${min}與${max}之間`, confirmed: (field, [confirmedField]) => `${field}不能和上面${confirmedField}匹配`, credit_card: (field) => `${field}的格式錯誤`, date_between: (field, [min, max]) => `${field}必須在${min}和${max}之間`, date_format: (field, [format]) => `${field}必須符合${format}格式`, decimal: (field, [decimals = '*'] = []) => `${field}必須是數(shù)字,且能夠保留${decimals === '*' ? '' : decimals}位小數(shù)`, digits: (field, [length]) => `${field}必須是數(shù)字,且精確到${length}位數(shù)`, dimensions: (field, [width, height]) => `${field}必須在${width}像素與${height}像素之間`, email: (field) => `${field}不是一個有效的郵箱`, excluded: (field) => `${field}不是一個有效值`, ext: (field) => `${field}不是一個有效的文件`, image: (field) => `${field}不是一張有效的圖片`, included: (field) => `${field}不是一個有效值`, integer: (field) => `${field}必須是整數(shù)`, ip: (field) => `${field}不是一個有效的地址`, length: (field, [length, max]) => { if (max) { return `${field}長度必須在${length}到${max}之間` } return `${field}長度必須為${length}` }, max: (field, [length]) => `${field}不能超過${length}個字符`, max_value: (field, [max]) => `${field}必須小于或等于${max}`, mimes: (field) => `${field}不是一個有效的文件類型`, min: (field, [length]) => `${field}必須至少有${length}個字符`, min_value: (field, [min]) => `${field}必須大于或等于${min}`, numeric: (field) => `${field}只能包含數(shù)字字符`, regex: (field) => `${field}格式無效`, required: (field) => `${field}是必須的`, size: (field, [size]) => `${field}必須小于${formatFileSize(size)}`, url: (field) => `${field}不是一個有效的url` } } })
內(nèi)容是差不多的,用代碼的話更直觀一點(diǎn)。
四、HTML代碼示例
<div class="item-ipt" > <label>賬號</label> <input class="ipt" name="name" data-vv-as="賬號" v-validate="'required|alpha_dash'" v-model="username" placeholder="請輸入用戶名" :disabled="nameable"/> <span v-show="errors.has('name')" class="ipt-err">{{ errors.first('name') }}</span> </div> <div class="item-ipt" > <label>手機(jī)號</label> <input class="ipt" name="mobile" data-vv-as="手機(jī)號" v-validate="'required|mobile'" v-model="mobile" placeholder="請輸入驗(yàn)證碼" /> <span v-show="errors.has('mobile')" class="ipt-err">{{ errors.first('mobile') }}</span> </div>
name
:必須要添加,不然無法關(guān)聯(lián)data-vv-as
:錯誤提示的中文名稱;例:賬號不能為空,手機(jī)號不能為空。v-validate
:驗(yàn)證規(guī)則,多個用 ‘|’ 分開。alpha_dash 就是中文規(guī)則,能夠包含字母數(shù)字字符、破折號和下劃線的意思。
錯誤提示span里的內(nèi)容為固定寫法,errors.has有無錯誤顯示,errors.first提示錯誤信息
五、自定義驗(yàn)證規(guī)則
這里放了一些例子提供參考
//手機(jī)的驗(yàn)證。 VeeValidate.Validator.extend("mobile", { getMessage: () => `請輸入正確的手機(jī)號碼`, validate: value => value.length === 11 && /^(((13[0-9]{1})|(14[57]{1})|(15[012356789]{1})|(17[03678]{1})|(18[0-9]{1})|(19[89]{1})|(16[6]{1}))+\d{8})$/.test( value ) }); //身份證的驗(yàn)證。 VeeValidate.Validator.extend("idCard", { getMessage: () => `請輸入正確的身份證號碼`, validate: value => /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/.test( value ) }); //郵箱的驗(yàn)證。 VeeValidate.Validator.extend("Email", { getMessage: () => `請輸入正確的郵箱地址`, validate: value => /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test( value ) }); //郵箱的驗(yàn)證。 VeeValidate.Validator.extend("fax", { getMessage: () => `請輸入正確的辦公電話`, validate: value => /^((0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/.test( value ) }); VeeValidate.Validator.extend("intOrDe", { getMessage: () => `請輸入正確的值,整數(shù)或小數(shù),小數(shù)后只能二位`, validate: value => /^(-)?\d+(\.\d{1,2})?$/.test( value ) });
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue SPA單頁應(yīng)用首屏優(yōu)化實(shí)踐
這篇文章主要介紹了Vue SPA單頁應(yīng)用首屏優(yōu)化實(shí)踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06antd-日歷組件,前后禁止選擇,只能選中間一部分的實(shí)例
這篇文章主要介紹了antd-日歷組件,前后禁止選擇,只能選中間一部分的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10vue結(jié)合leaflet實(shí)現(xiàn)鷹眼圖
本文主要介紹了vue結(jié)合leaflet實(shí)現(xiàn)鷹眼圖,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06vue elementui select標(biāo)簽監(jiān)聽change事件失效問題
這篇文章主要介紹了vue elementui select標(biāo)簽監(jiān)聽change事件失效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04