正在作的项目使用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', '内容不能为空')
复制代码
项目源码在这里,你们能够自行去看源码(简单易懂),这也是我没有写源码实现的缘由,我但愿感兴趣的朋友能够从这个简单的插件中学会看源码。若是有疑问或者更好的想法能够和我交流一波,你们共同进步,固然,能点个赞就更好了。