赞
踩
本文主要讲解Form 表单的必填项校验、正则验证、自定义校验规则和兜底校验
为什么要进行表单校验呢? 如果说用户每次填写完信息都提交给服务器,服务器返回说你的信息填写的格式不正确,又要重新提交一次,又告诉你不正确,这样效率是不是很低呢!这就是表单校验的意义所在!在提交服务器之前全部校验一次!格式正确才让你提交!
(1.)el-form 上的 model 属性
(2.)el-form 上的 rules 属性
(3.)el-form-item 上的 prop 属性
model负责拿到表单所有项的数据
rules负责校验规则
props负责告诉form表单 model里的数据 和 rules 的对应关系,这里注意一个问题,prop的值一定要和校验规则里的值一致,最好prop和v-model和rules里的值三个都一样,这样不容易出错
这里以username用户名的校验为例
每一项的校验规则都为一个数组,数组里放了多个对象,每个对象代表一个校验规则,
这里的第一个对象代表必填项校验(required),message是提示信息,trigger代表何时触发校验
第二个对象就是正则校验,可以利用pattern自定义规则
为什么需要自定义校验呢?比如用户注册时,输入密码完需要确认密码,这时就需要自定义校验校验看看两者是否一致 这里以确认密码为例讲解
repassword: [
// 非空判断
{ required: true, message: '请再次输入密码', trigger: 'blur' },
{ pattern: /^\S{6,15}$/, message: '请输入 6 ~ 15 位的非空字符', trigger: 'blur' },
// 自定义校验: 两次输入的密码是否一致
{ validator: checkPwd, trigger: 'blur' }
]
repassword是确认密码的校验规则,第三个对象里的validator即为自定义校验,checkPwd为触发的自定义校验函数,这个函数的定义需要写在 data数据return的上面,其中参数二就是确认密码填写的值,需要和regForm.password的的值作对比
参数三尤其注意,这个回调函数无论 密码 和确认密码 一不一致都必须调用一次
callback(new Error(‘两次输入的密码不一致’))表示不通过
callback()表示通过
data() { // 参数1: rule 对象, 是校验规则, 一般不用 // 参数2: value 校验项的数据 // 参数3: callback 回调函数, 决定是否校验通过 const checkPwd = (rule, value, callback) => { if (value !== this.regForm.password) { callback(new Error('两次输入的密码不一致')) } else { callback() } } return { regForm: { username: '', password: '', repassword: '' }, regRules: { username: [ // 非空 { required: true, message: '请输入用户名', trigger: 'blur' }, // 用户名必须是 1 ~ 10 位的数字字母, 同时不能以数字开头 { pattern: /^[a-zA-Z][a-zA-Z0-9]{0,9}$/, message: '请输入 1 ~ 10 位的数字或字母, 不能以数字开头', trigger: 'blur' } ], password: [ // 非空 { required: true, message: '请输入密码', trigger: 'blur' }, { pattern: /^\S{6,15}$/, message: '请输入 6 ~ 15 位的非空字符', trigger: 'blur' } ], repassword: [ // 非空 { required: true, message: '请再次输入密码', trigger: 'blur' }, { pattern: /^\S{6,15}$/, message: '请输入 6 ~ 15 位的非空字符', trigger: 'blur' }, // 自定义校验: 两次输入的密码是否一致 { validator: checkPwd, trigger: 'blur' } ] } } }
为什么要有兜底校验呢? 前面所讲的几种校验方式都是在提醒用户,诶!你这样填有点不对劲啊!但是用户要是很固执,照样提交,你也没办法!
这就需要咱们的兜底校验登场了! 在你提交请求之前,帮你把所有的校验再过一遍,只要有一项校验不通过,那就无法提交申请!
methods: { reg() { // validate 方法就是做兜底校验 // 传入一个回调函数, 回调函数第一个参数就是是否通过的结果 //如果全部通过了校验,则valid为true,但凡有一项没通过,则valid为false this.$refs.regForm.validate(async valid => { if (!valid) return const { data: res } = await this.$http.post('/api/reg', this.regForm) if (res.code !== 0) return this.$message.error(res.message) this.$message.success(res.message) // 4. 跳转至登录页 /login // 编程式导航 this.$router.push('/login') }) } }
创作不易,如果这篇文章有帮助到你的话,给作者点赞加关注吧~
以上就是今天要讲的内容,本文介绍了表单校验的使用,可以让用户获得更好的体验!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。