基于vue.js 2.0表单验证vuelidate插件介绍及使用

官网:https://monterail.github.io/v...
Github:https://github.com/monterail/...

具体的安装方法和项目引入使用就不说了,官网说的很清楚。下面直接上例子

一、简单介绍

先简单看下main.js 做了什么
clipboard.png
clipboard.png
clipboard.png

测试用的页面:test-page.vue
clipboard.png
clipboard.png

1、$v values 属性和值

刷新页面,在浏览器上可以看到如下结果
clipboard.png

$v 常用的属性和值:
required -- 需要非空数据,false-输入框现为空值,true-输入框现为非空值
$model -- this.$v.name.$model相当于this.name,相当于v-model的值
$invalid -- 验证状态,true-验证不通过,false-验证通过
$dirty -- 表示用户是否至少触摸了一次验证字段。用$touch和$reset管理此标识
$error – 用于判断是否应显示错误消息。true-显示,false-不显示
$error === this.$dirty && !this.$pending && this.$invalid
$pending -- 始终为false:所有验证器都是同步的
email – 邮箱格式验证,false-格式错误,true-格式正确(包括空值)

2、$v methods 方法

clipboard.png
clipboard.png

$touch -- 触发验证,把指定的验证器及其所有子项的$dirty置为true
$reset -- 重置验证,把指定的验证器及其所有子项的$dirty置为false
这些方法可以在html中使用@input或@blur绑定,也可以在js中触发执行

3、validations 验证配置项

clipboard.png

注意:所有的验证器需要与data下面的数据有对应值

4、Builtin validators 内置的验证规则

官方自带的验证规则:required, between, maxLength, minLength, minValue, maxValue, alpha, alphaNum, numeric, email, ipAddress, macAddress, sameAs, url…
为了方便vue每个子组件的使用,在main.js做了统一引入,并挂载在vue原型的$rules上,可以看之前的main.js代码截图。

二、基于vuelidate的vue组件封装及使用

1、需求:

(1)给输入框提供验证规则,必填、邮箱地址、手机号、字母数字下划线等等;
(2)当不满足其中一条规则时,给出提示,不能做后续操作(例如向后端发请求);
(3)提示方式:如果验证不通过,当输入框失焦,输入框标红,鼠标悬浮、聚焦出现提示语;
(4)当输入框有多条验证规则时,只显示第一条触发规则的提示语;
(5)第一次输入,当输入框的验证规则包含有“输入内容限制”的规则时,比如只能输入数字,需要即时提示(输入过程就要提示),主动删除内容后,提示消失。输入框失焦后,只要触发规则,提示语会一直跟随。

clipboard.png

2、封装思路

(1)需要提供的属性有:error—一个标识,用于判断是否标红输入框,是否显示错误提示语。msgList—一个json数组,当有多少条验证规则时就有多少项;每一项包括,show:是否显示错误提示的标识,text:错误提示语。
(2)父组件调用时,能够自定义需要验证的内容,可以是输入框、选择框等等。(利用slot)
(3)错误提示语可以根据输入框(选择框)的高度,自动跟随提示在下方。

tip-msg.vue组件
clipboard.png
clipboard.png

关键的技术点已经用红框标出。

3、基本使用方法

因为在很多模块都会使用表单验证,所以在main.js全局引入并注册
clipboard.png
clipboard.png

test-page.vue
clipboard.png
clipboard.png
clipboard.png
clipboard.png

4、自定义验证规则

除了官方自带的验证规则,我们还可以根据实际业务需求自定义验证规则。
vuelidate-rule.js
clipboard.png
clipboard.png

带参数的自定义规则:
clipboard.png

注意,当验证的字段是非必填时,即没有required时,要加上 !helpers.req(value) 这个req帮助器。可以参考GitHub上的官网源码:
clipboard.png

main.js
clipboard.png
clipboard.png

test-page.vue
clipboard.png
clipboard.png
clipboard.png

5、Config keywords 配置关键字(介绍$each的用法)

clipboard.png
clipboard.png
clipboard.png
clipboard.png

6、$each 配合 $iter 用法

clipboard.png

这里需要注意的一点,使用了$iter之后,index变成了string,如果要变回number可以使index-0
clipboard.png

7、requiredIf用法

官方说明:requiredIf-仅当提供的属性或谓词为true时才需要非空数据。
还是直接上例子更直白:
clipboard.png

直接点击提交,验证通过
clipboard.png

输入ip之后点击提交,验证不通过
clipboard.png

以上,就是使用vuelidate插件做表单验证开发中常用到的功能,还有更多强大的功能等着各位去发现,加油吧少年!文中如有不正确的地方欢迎指出~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值