好用的表单验证工具 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 ...
随机推荐
- 搭建Loki、Promtail、Grafana轻量级日志系统(centos7)
搭建Loki.Promtail.Grafana轻量级日志系统(centos7)--简称PLG 需求 公司项目采用微服务的架构,服务很多,每个服务都有自己的日志,分别存放在不同的服务器上.当查找日志时需 ...
- IDEA版部署离线ArcGIS api for JavaScript
痛苦!折磨! 这两天发现IDEA 做ArcGIS api 开发比EClipse好用(重点是没有JS提示).但引入的ArcGIS api 一直报错,说找不到.这两天思来想去就是不知道为什么找不到loca ...
- FLask插件
Flask插件 flask-session 下载 pip install Flask-session 导入 from flask_session import Session 实例化session 在 ...
- linux 查看命令
linux查找命令 ls查看文件信息 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭 ...
- 如何做一个网站 (C# + MVC Web+ easyUI )
如何做一个网站 小编想做一个网站,采用技术为:C# + MVC Web+ easyUI 小编经过几天的学习,以及指了几位大神指导,初见效果.建立网站的思路:先列举需要用到了几个知识点,然后逐一攻克,然 ...
- C++_STL_all_of
all_of 功能描述 如果在[first,last)范围内的数组进行判断, 如果pred返回true返回true 否则返回false 等同于 template<class InputItera ...
- kafka报文一直打印的问题
一.问题描述 今天开发了一个kafka消费者数据接收的功能,基本过程为分别启动本地的kafka服务和代码程序,在服务端手动发送消息,代码来进行接收消费.经测试,代码功能正常,但是再接收到一条kafka ...
- 转:master公式(主方法)
master公式(也称主方法)是利用分治策略来解决问题经常使用的时间复杂度的分析方法,(补充:分治策略的递归解法还有两个常用的方法叫做代入法和递归树法),众所众知,分治策略中使用递归来求解问题分为三步 ...
- List、Map、Set 三个接口存取元素时,各有什么特点?
List 以特定索引来存取元素,可以有重复元素.Set 不能存放重复元素(用对象的 equals()方法来区分元素是否重复).Map 保存键值对(key-value pair)映射, 映射关系可以是一 ...
- WSGI是个啥?大白话告诉你wsgi做了什么!
定义: 官方定义:wsgi是Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之 ...