好用的表单验证工具 vuelidate
Vue validation(表单验证)--vuelidate
表单是用户那里收集的数据的工具。如果它没有收集到你需要的数据,或者收集到的数据不对,那么你的表单就没有达到它的目的。这就是为什么我们需要表单验证。
1.需要验证的问题
- 必要的信息不能让用户提交空信息
- 虽然不能保证用户提交的信息100%正确,但至少提交信息的格式要保证正确
- 通过表单验证控制一些元素的行为,比如信息不正确,提交按钮的响应
2.Vuelidate
虽然可以从头开始编写所有表单验证,但已经有一些高质量的库可以帮助解决这个问题。这里我们要介绍的library是Vuelidate,Vuelidate是一个流行的轻量级验证库,由PawełGrabarz和Damian Dulisz创建,Damian Dulisz是Vue核心团队的成员。它也相当灵活,可以随着您的应用程序规模扩大,并且其验证需求也在增长。

首先我们来安装(Vuelidate)
1$ npm install vuelidate -S
安装好了Vuelidate,我们需要在main.js中引入它
1import 'Vuelidate' from 'Vuelidate'
2Vue.use(Vuelidate)
现在我们可以在我们的spa中全局使用Vuelidate。
1// demo.vue
2<template>
3 <div>
4 <input type="email" v-model="email"/>
5 <button type="submit">提交</button>
6 </div>
7</template>
8
9<script>
10 import { required, email } from 'vuelidate/lib/validators'
11 export default {
12 data() {
13 return {
14 email: null
15 }
16 },
17 validations: {
18 email: {
19 required,
20 email
21 }
22 }
23 }
24</script>
demo中,我们将向组件添加一个validations选项。这个选项不是Vuelidate提供给我们的;它只是我们添加的一个选项,Vuelidate可以利用它。
在validations选项中,我们为data中的react数据email添加一个对象,它被template中的input元素绑定。
其次我们将从Vuelidate导入类似'required','email'这样的规则。这些规则是内置的Vuelidate验证器。详见以下列表:
规则 | 参数 | 描述 |
---|---|---|
required | Boolean | 需要非空数据。检查空数组和仅包含空格的字符串。 |
minLength | 最小长度 | 要求输入具有最小指定长度(包括首尾)。与数组一起使用。 |
maxLength | 最长长度 | 要求输入具有最大的指定长度(包括该长度)。与数组一起使用。 |
between | 最小,最大 | 检查数字或日期是否在指定范围内。最小值和最大值都包括在内。 |
alpha | Boolean | 仅接受字母字符。 |
alphaNum | Boolean | 仅接受字母数字。 |
numeric | Boolean | 仅接受数字。 |
integer | Boolean | 接受正负整数。 |
decimal | Boolean | 接受正负十进制数。 |
Boolean | 接受有效的电子邮件地址。请记住,您仍然必须在服务器上仔细验证它,因为如果不发送验证电子邮件就无法确定该地址是否真实。 | |
ipAddress | Boolean | 接受点分十进制表示法的有效IPv4地址,例如127.0.0.1。 |
minValue | 分 | 要求输入具有指定的最小数值或日期。 |
maxValue | 最大值 | 要求输入具有指定的最大数值或日期。 |
macAddress | 分隔符=':' | 接受有效的MAC地址,例如00:ff:11:22:33:44:55。不要忘记调用它macAddress(),因为它具有可选参数。您可以指定自己的分隔符,而不是':'。 |
url | Boolean | 接受有效的url地址。 |
or | || | 或 |
and | && | 与 |
not | ! | 非 |
withParams | $params | 不是真正的验证器,而是验证器修饰符。将$params对象添加到提供的验证器中。可以用于验证功能,甚至可以用于整个嵌套字段验证对象。对于创建自己的自定义验证器很有用。 |
requiredIf | 定位器* | 仅在提供的属性为true时才进行验证。 |
requiredUnless | 定位器* | 仅在提供的属性为false时才进行验证。 |
sameAs | 定位器* | 检查给定属性是否相等。 |
完成这些步骤后,Vuelidate会自动为组件添加了一个名为$v的计算属性。它包含了整个表单验证的当前状态。我们也可以单独读取email对象,它包含了email验证的状态。
在组件中我们可以直接使用this.$v获取到整个对象,并通过其中的状态做出我们所需要的逻。例如:
1$v.email.$invalid = true(说明email这项表单没有通过验证)
2$v.email.required = false(说明email为空)
3$v.email.required = false && $v.email.email = false
4(说明email格式错误)
当表单出现问题时,我们可以有效地向用户显示错误。但是进入页面就自动显示错误消息并不是很好的用户体验。Vuelidate提供了许多方法与属性可供使用,更多好用的属性可以自行去查文档,例如:
1$v.email.$dirty// 用户是否有触发过表单
2$v.email.$error// 用户真实错误$dirty + $invalid
3$v.email.$touch()// 用来改变$dirty值
$v中同时包含了表单的全局属性,与单个表单验证属性类似,可用于编写表单提交逻辑,即:
1$v.$dirty
2$v.$error
3$v.$anyDirty
4$v.$anyError
5$v.$invalid
$v.$invalid将在任何与我们的验证相关的错误发生时为真。您可以在提交表单之前检查$v.$invalid状态,从而轻松完成验证表单操作。注意:在那之前我们调用$v.$touch(),这将更改所有表单验证的$v.$dirty状态,导致所有$invalid字段的$error为true。

好用的表单验证工具 vuelidate的更多相关文章
- java后台表单验证工具类
/** * 描述 java后台表单验证工具类 * * @ClassName ValidationUtil * @Author wzf * @DATE 2018/10/27 15:21 * @VerSi ...
- java工具类(二)之java正则表达式表单验证
java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...
- 史上最全Java表单验证封装类
package com.tongrong.utils; import java.util.Collection; import java.util.Map; import java.util.rege ...
- 自定义表单验证--jquery validator addMethod的使用
原文地址:jquery validator addMethod 方法的使用作者:蜡笔小玄 jQuery.validate是一款非常不错的表单验证工具,简单易上手,而且能达到很好的体验效果,虽然说在项目 ...
- 前端工具 - 15个最佳的 JavaScript 表单验证库
客户端验证在任何项目都是不够的,因为 JavaScript 可以直接忽略,人们可以提交请求到服务器. 然而这并不意味着客户端验证都没必要了,很多时候我们需要在用户提交到服务器之前给予提示.JavaSc ...
- jdbc工具类的封装,以及表单验证数据提交后台
在之前已经写过了jdbc的工具类,不过最近学习了新的方法,所以在这里重新写一遍,为后面的javaEE做铺垫: 首先我们要了解javaEE项目中,文件构成,新建一个javaEE项目,在项目中,有一个we ...
- Vue 使用 vuelidate 实现表单验证
表单验证的应用场景十分广泛,因为网站对用户输入内容的限制是非常必要的. 在vue中,我们使用vuelidate方便地实现表单验证. 官方文档在这里https://monterail.github.io ...
- 再说表单验证,在Web Api中使用ModelState进行接口参数验证
写在前面 上篇文章中说到了表单验证的问题,然后尝试了一下用扩展方法实现链式编程,评论区大家讨论的非常激烈也推荐了一些很强大的验证插件.其中一位园友提到了说可以使用MVC的ModelState,因为之前 ...
- 由表单验证说起,关于在C#中尝试链式编程的实践
在web开发中必不可少的会遇到表单验证的问题,为避免数据在写入到数据库时出现异常,一般比较安全的做法是前端会先做一次验证,通过后把数据提交到后端再验证一次,因为仅仅靠前端验证是不安全的,有太多的htt ...
随机推荐
- Python之VSCode
在学习Python的过程中,一直没有找到比较趁手的第三方编辑器,用的最多的还是Python自带的编辑器.由于本人用惯了宇宙第一IDE(Visual Studio),所以当Visual Studio C ...
- 说说UI自动化中的PO模式
PO模式,全称PageObject模式,即页面对象模式.将页面定位与业务操作分离. po模式有以下几个优点: 1.易读性好 2.扩展性高 3.复用性强 4.维护性好 5.代码冗余率低 了解了po模式及 ...
- 除了增删改查你对MySQL还了解多少?
目录 除了增删改查你对MySQL还了解多少? MySQL授权远程连接 创建用户.授权 客户端与服务器连接的过程 TCP/IP 命名管道和共享内存 Unix域套接字文件 查询优化 MySQL中走与不走索 ...
- ShardingSphere-Proxy(一)
1.现实中的问题 我们知道数据库的数据,基本80%的业务是查询,20%的业务涵盖了增删改,经过长期的业务变更和积累数据库的数据到达了一定的数量之后,直接影响的是用户与系统的交互,查询时的速度,插入数据 ...
- JDBC中大数据量的分页解决方法?
最好的办法是利用sql语句进行分页,这样每次查询出的结果集中就只包含某页的数据内容. sql语句分页,不同的数据库下的分页方案各不一样,下面是主流的三种数据库的分页sql: oracle: selec ...
- IDEA 错误:程序包XXX不存在
第一种情况是:JDK版本不对,需要确认是否一致 第二种情况是:确认一下此菜单项是否启用Enabled 第三种情况:确认包目录是否标识为Java源目录 第四种情况:如果使用的是Gradle,确认以下配置 ...
- docker-compose配置django web项目容器和EMQX容器
1.Dockerfile FROM gatewayserver_null:v1.1 ADD ./GatewayServer /code ADD ./entrypoint.sh /code# 给entr ...
- Hadoop全分布式
1.安装jdk Linux下安装jdk-7u67-linux-x64.rpm 2.免密登录 ssl免密登录(centos6) 3.同步时间:date -s "2020-04-0 ...
- Vue手动集成less预编译器
less是一门css预处理语言,简单的说就是在css的基础上提升为可编程性的预编译器 需要在项目中安装 less ,less-loader 2个插件,语法为:npm i -D less less-lo ...
- promethues常用的函数
prometheus函数常用 时数据 (Instant vector): 包含一组时序,每个时序只有一个点,例如:http_requests_total区间数据 (Range vector): 包含一 ...