Vee-validate 父组件获取子组件表单校验结果的实例代码


Posted in Javascript onMay 20, 2019

vee-validate 是为 Vue.js 量身打造的表单校验框架,允许您校验输入的内容并显示对应的错误提示信息。它内置了很多常见的校验规则,可以组合使用多种校验规则,大部分场景只需要配置就能实现开箱即用,还支持自定义正则表达式。而且支持 40 多种语言,对本地化、多语言支持非常友好。

国内饿了么团队开源项目 Element UI 就用到了 vee-validate

vee-validate官网:https://baianat.github.io/vee-validate/

使用方法

可查看官网文档(https://baianat.github.io/vee-validate/)或者查看这一篇文章(https://blog.givebest.cn/javascript/2019/04/20/vue.js-nuxt.js-use-vee-validate.html)。

组件内使用 Vee-validate

子组件

<template>
 <div>
 <input
  placeholder="请输入姓名"
  v-model="username"
  name="username"
  v-validate="'required'"
  :error-message="errors.first('username')"
 />
 </div>
</template>

<script>
export default {
 name: "Username",
 data() {
 return {
  username: ''
 }
 },
 methods: {
 // 表单校验
 validateForm() {
  return this.$validator.validateAll();
 },
 }
};
</script>

父组件

<template>
 <div>
 <Username ref="usernameComponent" />
 <Password ref="passwordComponent" />

 <div>
  <button @click="onSubmit">提交校验</button>
 </div>
 </div>
</template>

<script>
import Username from "~/components/username.vue"
import Password from "~/components/password.vue"

export default {
 components: {
 Username,
 Password
 },
 data() {
 return {}
 },
 methods: {
 onSubmit (e) {
  e.preventDefault() // 阻止默认事件

  // 父组件触发子组件校验,并通过 Promise 返回值
  let vf1 = this.$refs.usernameComponent.validateForm()
  let vf2 = this.$refs.passwordComponent.validateForm()

  // 提交表单前,校验所有子组件,全部通过才允许下面操作
  Promise.all([vf1, vf2]).then(result => {
  // 有一个组件未通过,就提示错误信息
  if (result.indexOf(false) > -1) {
   console.log("全部校验未通过")
   return
  }

  // 校验全部通过处理
  console.log("全部校验通过")
  })
 },
 }
};
</script>

总结

其实组件内使用 Vee-validate 校验很方便,主要问题可能是父组件怎么触发子组件内的校验,并获取校验结果。这里用到 Vue.js 里的 ref 特性,给子组件赋值一个 ID 引用,然后就可以使用 this.$refs.childComponent 获得子组件实例引用,再分别调起子组件写好的校验方法,如:

/**
父组件触发子组件校验,并通过 Promise 返回值
*/
let vf1 = this.$refs.usernameComponent.validateForm() // 父组件调用 usernameComponent 组件里的 validateForm 方法
let vf2 = this.$refs.passwordComponent.validateForm() // 父组件调用 passwordComponent 组件里的 validateForm 方法

然后通过 Promise.all 获取全部子组件校验结果后,再根据结果来判断,是否全部通过,分别做出不同处理。

// 提交表单前,校验所有子组件,全部通过才允许下面操作
Promise.all([vf1, vf2]).then(result => {
 // 有一个组件未通过,就提示错误信息
 if (result.indexOf(false) > -1) {
 console.log("全部校验未通过")
 return
 }

 // 校验全部通过处理
 console.log("全部校验通过")
})

总结

以上所述是小编给大家介绍的Vee-validate 父组件获取子组件表单校验结果的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
Javascript this指针
Jul 30 Javascript
使用jQuery实现返回顶部
Jan 26 Javascript
JavaScript中操作字符串小结
May 04 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
May 11 Javascript
AngularJS实现标签页的两种方式
Sep 05 Javascript
Bootstarp基本模版学习教程
Feb 01 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
Feb 13 Javascript
基于Node.js的WebSocket通信实现
Mar 11 Javascript
微信小程序实现时间预约功能
Nov 27 Javascript
Node.js EventEmmitter事件监听器用法实例分析
Jan 07 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
Jun 11 Javascript
js动态生成表格(节点操作)
Jan 12 Javascript
React如何实现浏览器打印部分内容详析
May 19 #Javascript
koa-router路由参数和前端路由的结合详解
May 19 #Javascript
Vue.js中该如何自己维护路由跳转记录
May 19 #Javascript
利用Vue实现一个markdown编辑器实例代码
May 19 #Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
May 18 #Javascript
微信小程序实现搜索指定景点周边美食、酒店
May 18 #Javascript
vue+高德地图写地图选址组件的方法
May 18 #Javascript
You might like
php 遍历数据表数据并列表横向排列的代码
2009/09/05 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
php实现监听事件
2013/11/06 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
Python制作数据导入导出工具
2015/07/31 Python
python生成器与迭代器详解
2019/01/01 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
详解Django配置JWT认证方式
2020/05/09 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
水果花束:Fruit Bouquets
2017/12/20 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
保送生自荐信范文
2013/10/06 职场文书
英语专业应届生求职信范文
2013/11/15 职场文书
护士实习生自我鉴定范文
2013/12/10 职场文书
国际贸易专业个人求职信格式
2014/02/02 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
计算机系本科生求职信
2014/05/31 职场文书
小学运动会演讲稿
2014/08/25 职场文书
大国崛起日本观后感
2015/06/02 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android