文章标题

verify.js是一个vue插件,用于表单验证。
该插件包含两个指令v-verify与v-check,以及一些添加在表单项元素上的属性值,来完成校验规则配置 ->进行校验 ->错误提示->打包通过校验的数据这四步。

一、开始

import Verify from 'components/verify';
Vue.use(Verify,{
    // errTip【必传】,而且需要是一个Function,用于定义规则错误时弹出的提示形式。
    errTip(errMsg) {
        //这里使用了饿了么的提示组件,可以根据需要换成其他
        let _vue = new Vue();
        _vue.$notify.error({
              title: '错误',
              message: errMsg
        });
    },
    // addOptionList【选传】,为对象,形式如下,用于添加可选规则,从这里添加后,在v-verify指令中的optionRule就可以使用。
    addOptionList : {
        // 注意命名开头大写+驼峰
        IdCard : {
            reg : /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
            errMsg : '身份证号码为15位或者18位'
        }
    }
});

二、校验规则配置

  • v-verify指令
    将v-verify添加在表单项元素中(如input、select),然后按需进行配置,即可完成校验规则的配置。它的完整形式为:v-verify:fieldName.optionRule=”customRule”。
参数说明可选值类型必填
fieldName字段名。通过校验打包出来的数据的字段名。跟需要传给后台的字段名一致即可。-String
optionRule可选校验规则。UserName、Password、Mobile等(命名开头大写+驼峰)String
customRule自定义校验规则。自定义验证规则数组里,可传多个规则(类型是对象)。-Array

关于customRule 的特别说明,customRule 需按照这样的格式传进去:

[
    {   
        type : 'Function',
        typeVal : 'checkDepartment',
        errMsg : '自定义checkDepartment报错'
    },
    {   
        type : 'Reg',
        typeVal : /^[A-Za-z0-9]+$/,
        errMsg : '登录账号只能输入英文或数字'
    }
]

customRule是一个数组,里面可以传多条规则,每条规则都是一个对象,这个规则对象包含三个属性:type(规则类型)、typeVal(与规则类型对应的值见下表) 、errMsg (与规则类型对应的错误提示)

typetypeVal
NonEmpty【Boolean】true/false
Reg【正则字面量】/^[A-Za-z0-9]+$/
Function【String】方法名,如‘test’,则可以在实例的methods中写一个test函数用于验证,返回值必须为Boolean
LimitMin【String】最小长度
LimitMax【String】最大长度
Limit【Array】[最小长度,最大长度]
  • 属性值
    将属性值添加在表单项元素中,相当于可选校验规则。目前可添加的属性值有:
参数说明必填
tag该表单项的名字,用于错误提示。建议都填上,因为比如非空验证错误提示是tag+’不能为空’这样的形式展示的。
minLength最小长度
maxLength最大长度

三、进行校验

  • v-check指令
    将v-check添加在提交的元素上,随即进行对所有表单项的校验。校验顺序跟表单项在Dom中的位置一致。
  • 校验规则说明

该插件有三种校验规则,默认校验规则、可选校验规则、自定义校验规则。它们间的优先级原则是默认校验规则 < 可选校验规则 < 自定义校验规则,相同type(如type:reg)的规则,优先级大的会覆盖小的。经过这样原则的合并,最终会产生形如下图的规则集合,报错的时候就会按顺序报错。
这里写图片描述

  1. 默认校验规则:插件自带的默认规则,现有的默认校验规则是“非空校验”,即默认存在一个type为“NonEmpty”的校验规则。可以通过在v-verify指令中的optionRule中添加“CanEmpty”来取消该默认规则的验证。如v-verify:userName.UserName.CanEmpty,这时当用户没有输入东西的时候,会跳过默认的非空校验和UserName校验,当输入了东西的时候,才进行UserName校验。
  2. 可选校验规则:插件内自带一些可选的校验规则,并且可以通过在Vue.use()时添加addOptionList 拓展。可选校验规则的type都是reg,所以如果存在多个可选规则并且他们的type都是reg的话,写在后面的规则会覆盖前面的规则。
  3. 自定义校验规则:可以通过自定义校验规则对原有的规则重写。比如默认规则“NonEmpty”,他的错误提示errMsg为“此处不能为空”。那么我们可以通过自定义校验规则去重写errMsg:
v-verify:fieldName="[
    {   
        type : 'NonEmpty',
        typeVal : true,
        errMsg : '自定义NonEmpty报错'
    }
]"

四、打包通过校验的数据
所有表单项通过验证后,可以通过$afterVerifyPass方法接收打包后的数据。

export default {
    methods : {
        $afterVerifyPass(data) {
            console.log(data);
        }
    }
}
/*最终data
    {
        account:"541236845",
        contact:"13568745123",
        department:"我是部门",
        enableFlg:"有效",
        userName:"yyyoo"
    }
*/

五、完整例子


<label>
    状态
    <select v-verify:enableFlg tag="状态">
        <option value="">请选择状态</option>
        <option value="有效">有效</option>
        <option value="无效">无效</option>
    </select>
</label>
<label style="margin-top:20px">
    姓名
    <input type="text" placeholder="请输入姓名(可选)" 
           v-verify:userName.UserName.CanEmpty tag="姓名">
</label>
<label style="margin-top:20px">
    部门
    <input type="text" placeholder="请输入部门"
           v-verify:department="[
                {   
                    type : 'Function',
                    typeVal : 'checkDepartment',
                    errMsg : '自定义checkDepartment报错'
                }
           ]" tag="部门">
</label>
<label style="margin-top:20px">
    登录账号
    <input type="text" placeholder="请输入登录账号"
           v-verify:account="[
                {   
                    type : 'Reg',
                    typeVal : /^[A-Za-z0-9]+$/,
                    errMsg : '登录账号只能输入英文或数字'
                }
           ]" tag="登录账号">
</label>
<button v-check>提交<button>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值