好用的表单验证工具 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 模拟RSA 加密与解密
一.关于 RSA具体原理请移步其他文章,本文主要使用Python 来模拟RSA 算法的实现过程 二.简要分析 在RSA算法中,存在以下几个参数: 1.大素数p.q 2.n = p *q 3.Phi_n ...
- 『现学现忘』Docker基础 — 29、Docker容器数据卷的应用
目录 1.验证容器和宿主机之间数据共享 2.容器停止退出后,主机修改后数据是否同步 3.带只读权限的挂载数据卷 1.验证容器和宿主机之间数据共享 通过上面的操作,接下来我们演示一下通过数据卷的挂载,实 ...
- 内网穿透工具--NPS
一.简介 NPS是一款轻量级,高性能,强大功能的内网穿透代理服务器.目前支持TCP,UDP流量转发,可支持任何TCP,UDP上层协议(访问内网网站,本地支付接口调试,SSH访问,远程桌面,内网dns解 ...
- Docker安装与基本命令
docker安装 Ubuntu 更新apt包索引 sudo apt-get update 更新apt包索引 sudo apt-get upgrade 安装docker sudo apt-get ins ...
- 查找goog13的ip
C:\Users\Deen>ping 172.217.24.14 Pinging 172.217.24.14 with 32 bytes of data: Reply from 172.217. ...
- 2022IDEA配置启动lilishop的swagger展示
目录 一.概述 二.基本构建 三.Git 导入编译器 四.模块描述浅析 五.配置文档 1.注释配置文件 2.添加配置 3.暂时关闭权限 4.浏览器测试访问 5.其他需要修改模块 六.参考文献 结语 一 ...
- kafka如何保证不重复消费又不丢失数据_Kafka写入的数据如何保证不丢失?
我们暂且不考虑写磁盘的具体过程,先大致看看下面的图,这代表了 Kafka 的核心架构原理. Kafka 分布式存储架构 那么现在问题来了,如果每天产生几十 TB 的数据,难道都写一台机器的磁盘上吗?这 ...
- Idea集成CSSO插件压缩css文件
首先需要本地已安装node环境,并且csso-cli已通过npm安装到本地目录,只要能找到就行. 1. 打开Settings配置,确认图中的 File Watchers 插件是否已存在,如果不存在,去 ...
- XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪几种方式?
XML 文档定义分为 DTD 和 Schema 两种形式,二者都是对 XML 语法的约束,其 本质区别在于 Schema 本身也是一个 XML 文件,可以被 XML 解析器解析,而且 可以为 XML ...
- Java中带参数的方法和JavaScript中带参数的函数有什么不同?
javascript是动态语言,是弱类型语言,其参数的使用很灵活:java则是强类型语言,参数的类型必须明确的