正在作的項目使用input比較多,基本每一個input須要作輸入校驗,一個個校驗比較麻煩,這明顯與程序員的思想相悖。因而就開始了挖坑之旅!在公司大佬的指導下,終於完成了一個較簡單的vue表單驗證插件。html
npm install mmj-vue-vd
複製代碼
在vue腳手架的main.js裏引入vue
import vd from 'mmj-vue-vd 複製代碼
Vue.use(vd)
複製代碼
在vue文件中使用git
<input type="text" v-vd="{rule:['numberInterval(1, 100)', 'required'],bind:'submitOk'}" v-model="msg">
複製代碼
參數程序員
樣式修改github
自定義規則npm
required: '不爲空',</br>
number: '請填入數字',</br>
znumber: '請輸入正數',</br>
fnumber: '請輸入負數',</br>
notznumber: '請輸入非正數',</br>
notfnumber: '請輸入非負數',</br>
integer: '請輸入整數',</br>
pInteger: '請輸入正整數',</br>
nInteger: '請輸入負整數',</br>
notpInteger: '請輸入非正整數',</br>
notnInteger: '請輸入非負整數',</br>
chinese: '請輸入中文',</br>
email: '請輸入郵箱地址',</br>
url: '請輸入連接地址',</br>
postCode: '請輸入郵編地址',</br>
idCard: '請輸入身份證號',</br>
numberInterval: '兩個數之間'</br>
複製代碼
因爲插件是基於vue指令的,因此在使用的時候只需使用插件命令便可。數組
<div class="input_group">
<label>非必填項</label>
<input class="input" type="text" value="" v-vd="{rule:['number'],bind:'submitOk', nothing: 'nothing'}">
</div>
<div class="input_group">
<label>必填項</label>
<input class="input" type="text" value="dsfg" v-vd="{rule:['required'],bind:'submitOk'}">
</div>
<div class="input_group">
<label>填入數字</label>
<input class="input" type="text" value="dsfg" v-vd="{rule:['required', 'number'],bind:'submitOk'}">錯誤信息在最後提示
</div>
<div class="input_group">
<label>填入數字</label>
<span>
<input class="input" type="text" v-model="dsfg" v-vd="{rule:['required', 'number'],bind:'submitOk'}">
</span>用元素包裹input時,提示信息顯示位子
</div>
複製代碼
使用一個數組來綁定同一批次須要驗證的表單bash
data () {
return {
msg: '3221',
submitOk: []
}
}
複製代碼
因爲業務需求的不一樣,插件提供了自定義驗證規則的方法來提高插件的靈活性,customize(name, text, callback)函數
name: 規則名,必傳
text: 提示語,必傳
callback: 驗證函數, 非必傳
複製代碼
自定義最大輸入長度限制,帶有參數,則提示詞中使用變量需用"{{}}"包裹post
vd.customize('maxLen(len)', '最大長度爲{{len}}', function(val, args) {
return val.length <= args[0]
})
複製代碼
若是已存在此規則,則會覆蓋原有規則
vd.customize('required', '內容不能爲空')
複製代碼
項目源碼在這裏,你們能夠自行去看源碼(簡單易懂),這也是我沒有寫源碼實現的緣由,我但願感興趣的朋友能夠從這個簡單的插件中學會看源碼。若是有疑問或者更好的想法能夠和我交流一波,你們共同進步,固然,能點個贊就更好了。