VUE学习----validations(表单验证)
2020-11-03 本文已影响0人
扮猪老虎吃
需要验证的场景
- 必要的信息不能让用户提交空信息
- 保证提交信息的格式正确
- 表单验证控制一些元素的行为,比如信息不正确,提交按钮的相应
Vuelidate
Vuelidate是轻量级验证库。
- 安装方式
npm install vuelidate -S
- 引入方式
import 'Vuelidate' from Vuelidate
- 使用示例
//demo.vue
<template>
<div>
<input type="email" v-model="email"/>
<button type="submit">提交</button>
</div>
</template>
<script>
import { required, email } from 'vuelidate/lib/validators'
export default {
data() {
return {
email: null
}
},
validations: {
email: {
required,
email
}
}
}
</script>
demo中,组件添加了一个validations选项,为data中的数据email添加一个对象,被template中的input元素绑定。从Vuelidate导入‘required’、‘email’等规则,都是内置的Vuelidate验证器
。
规则 | 参数 | 描述 |
---|---|---|
required | Boolean | 需要非空数据。检查空数组和仅包含空格的字符串。 |
minLength | 最小长度 | 要求输入具有最小指定长度(包括首尾)。与数组一起使用。 |
maxLength | 最长长度 | 要求输入具有最大的指定长度(包括该长度)。与数组一起使用。 |
between | 最小,最大 | 检查数字或日期是否在指定范围内。最小值和最大值都包括在内。 |
alpha | Boolean | 仅接受字母字符。 |
alphaNum | Boolean | 仅接受字母数字 |
numeric | Boolean | 仅接受数字。 |
integer | 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验证的状态。
$v.email.$invalid = true(说明email这项表单没有通过验证)
$v.email.required = false(说明email为空)
$v.email.required = false && $v.email.email = false(说明email格式错误)
表单出现问题时,可以有效向用户显示错误,但是进入页面就自动显示错误消息,用户体验不好。Vuelidate提供了很多方法和属性使用。例如:
$v.email.$dirty // 用户是否有触发过表单
$v.email.$error // 用户真实错误$dirty + $invalid
$v.email.$touch() // 用来改变$dirty值
$v
中同时包含了表单的全局属性,可用于编写表单提交逻辑,即:
$v.$dirty
$v.$error
$v.$anyDirty
$v.$anyError
$v.$invalid
$v.$invalid
将在任何与我们的验证相关的错误发生时为真。您可以在提交表单之前检查$v.$invalid
状态,从而轻松完成验证表单操作。注意:在那之前我们调用$v.$touch()
,这将更改所有表单验证的$v.$dirty
状态,导致所有$invalid
字段的$error
为true。