Vue validation(表单验证)--vuelidate

表单是用户那里收集的数据的工具。如果它没有收集到你需要的数据,或者收集到的数据不对,那么你的表单就没有达到它的目的。这就是为什么我们需要表单验证。

1.需要验证的问题

  1. 必要的信息不能让用户提交空信息
  2. 虽然不能保证用户提交的信息100%正确,但至少提交信息的格式要保证正确
  3. 通过表单验证控制一些元素的行为,比如信息不正确,提交按钮的响应

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 接受正负十进制数。
email 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的更多相关文章

  1. java后台表单验证工具类

    /** * 描述 java后台表单验证工具类 * * @ClassName ValidationUtil * @Author wzf * @DATE 2018/10/27 15:21 * @VerSi ...

  2. java工具类(二)之java正则表达式表单验证

    java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...

  3. 史上最全Java表单验证封装类

    package com.tongrong.utils; import java.util.Collection; import java.util.Map; import java.util.rege ...

  4. 自定义表单验证--jquery validator addMethod的使用

    原文地址:jquery validator addMethod 方法的使用作者:蜡笔小玄 jQuery.validate是一款非常不错的表单验证工具,简单易上手,而且能达到很好的体验效果,虽然说在项目 ...

  5. 前端工具 - 15个最佳的 JavaScript 表单验证库

    客户端验证在任何项目都是不够的,因为 JavaScript 可以直接忽略,人们可以提交请求到服务器. 然而这并不意味着客户端验证都没必要了,很多时候我们需要在用户提交到服务器之前给予提示.JavaSc ...

  6. jdbc工具类的封装,以及表单验证数据提交后台

    在之前已经写过了jdbc的工具类,不过最近学习了新的方法,所以在这里重新写一遍,为后面的javaEE做铺垫: 首先我们要了解javaEE项目中,文件构成,新建一个javaEE项目,在项目中,有一个we ...

  7. Vue 使用 vuelidate 实现表单验证

    表单验证的应用场景十分广泛,因为网站对用户输入内容的限制是非常必要的. 在vue中,我们使用vuelidate方便地实现表单验证. 官方文档在这里https://monterail.github.io ...

  8. 再说表单验证,在Web Api中使用ModelState进行接口参数验证

    写在前面 上篇文章中说到了表单验证的问题,然后尝试了一下用扩展方法实现链式编程,评论区大家讨论的非常激烈也推荐了一些很强大的验证插件.其中一位园友提到了说可以使用MVC的ModelState,因为之前 ...

  9. 由表单验证说起,关于在C#中尝试链式编程的实践

    在web开发中必不可少的会遇到表单验证的问题,为避免数据在写入到数据库时出现异常,一般比较安全的做法是前端会先做一次验证,通过后把数据提交到后端再验证一次,因为仅仅靠前端验证是不安全的,有太多的htt ...

随机推荐

  1. ansible 四常用模块

    常用模块 Ansible默认提供了很多模块来供我们使用.在Linux中,我们可以通过 ansible-doc -l 命令查看到当前Ansible支持哪些模块,通过 ansible-doc -s [模块 ...

  2. 4月17日 python学习总结 反射、object内置方法、元类

    一.反射 下述四个函数是专门用来操作类与对象属性的,如何操作? 通过字符串来操作类与对象的属性,这种操作称为反射 class People: country="China" def ...

  3. CVE-2010-2861(Adobe ColdFusion 文件读取漏洞)

    漏洞介绍 Adobe ColdFusion是美国Adobe公司的一款动态Web服务器产品,其运行的CFML(ColdFusion Markup Language)是针对Web应用的一种程序设计语言. ...

  4. Linux开发板(树莓派)和服务器进行双向通信(socket)

    前言 ​ 物联网是目前嵌入开发必备的属性之一,我们常常需要把自己开发板和云端进行交互,本篇博文就记录一下. ​ 使用Socket来实现Linux开发板和服务器进行双向通信,Python中是默认集成了s ...

  5. java常见面试问题总结

    JDK1.7 并发的HashMap为什么会引起死循环? hashmap如何解决hash冲突,为什么hashmap中的链表需要转成红黑树? hashmap什么时候会触发扩容? jdk1.8之前并发操作h ...

  6. Servlet的会话机制?

    因为http协议是无状态协议,又称为一次性连接,所以webapp必须有一种机制 能够记住用户的一系列操作,并且唯一标示一个用户. Cookie: 又称为小饼干,实际就是使用一个短文本保存用户信息, 在 ...

  7. maven常用命令含义

    今天在开发过程中,对一个mapper.xml文件的sql进行了改动,重启tomcat后发现没有生效,首先考虑是不是远程服务开启着,导致代码没有走本地,确认远程服务是关闭的,的确是本地修改没有生效,于是 ...

  8. java中的正则表达式And Pattern And Macher

    在哪里?? java.util.regex包下有两个用于正则表达式的类, 一个是Matcher类, 另一个Pattern 简单例子 public class RegexLeaning { public ...

  9. su 和 sudo的区别

    su是一个命令,可切换其他用户进行操作:而 '-' 号则是代表是否完全切换指定的用户环境信息 sudo是一个服务,可通过/etc/sudoers进行配置文件,让被限制的用户只能执行被授予的命令操作.

  10. 数据结构:DHUOJ 单链表ADT模板应用算法设计:长整数加法运算(使用单链表存储计算结果)

    单链表ADT模板应用算法设计:长整数加法运算(使用单链表存储计算结果) 时间限制: 1S类别: DS:线性表->线性表应用 题目描述: 输入范例: -5345646757684654765867 ...