Vue from-validate 表单验证的示例代码


Posted in Javascript onSeptember 26, 2017

前言

需要进行表单数据验证,原先才用html5来完成验证,但是效果很差,也不够灵活,所以需要进行自定义的表单验证,网上的插件都太过庞大,项目并没有这么多的需求。
那让我们自己来写一个吧!

知识准备

vue的自定义指令

具体可以看官方手册,连接如下:https://vuejs.org/v2/guide/custom-directive.html

总的来说就是可以帮你在指定的钩子函数中跳用你的函数,参数(el,binding, vnode)

  • el: 绑定的dom
  • binding: 指令的各项属性
  • vnode: Vue 编译生成的虚拟节点

开始

1、指令的申明

需要注意的是参数在背绑定上后不会被所以要才用闭包的方式

Vue.directive('validate', {
 // 在指令第一次背绑定上时调用
 bind(el, binding, vnode) {
 }
}
<form id="red-package" @submit.prevent="submit" v-validate.formData="validate">
 ...
 <button type="submit" class="save">保存</button>
</form>

2、解析参数

Vue.directive('validate', {
 // vm对象,就是组件
 const vm = vnode.context;
 // 获得参数绑定的参数,就是规则对象
 const validate = binding.value;
 // 获得数据的key
 const dataKey = Object.keys(binding.modifiers)[0];
});

3、输入内容改变时进行规则验证

el.addEventListener('change', (e) => {
 try {
  // 事件触发的input标签名
  const changeElName = e.srcElement.name;
  // 如果未设定规则不验证
  if (validate[changeElName]) {
   // 把表单的所有参数传入
   validate[changeElName](vm[dataKey]);
   // 检验成功添加成功的class
   Util.removeClass(e.srcElement, 'success');
  }
 } catch (err) {
  // 抛出异常添加失败的class
  Util.addClass(e.srcElement, 'error');
 }
});

4、在提交时对所有数据进行校验

// 有更好的方案
el.getElementsByTagName('button')[0].addEventListener('click', (e) => {
 try {
  // 遍历对象
  Object.keys(vm[dataKey]).forEach((item) => {
   if (validate[item]) {
    validate[item](vm[dataKey]);
   }
  });
 } catch (err) {
  // 抛出错误提示
  vm.loading({
   text: '请检查参数',
  });
  vm.loaded(1000);
  // 阻止submit
  e.preventDefault();
 }
});

5、校验规则实例

amountRandomUpper({ budget, amountRandomUpper, amountRandomLower }) {
  if (amountRandomUpper < 1) {
    throw new Error('过小');
  }
  if (amountRandomUpper < amountRandomLower) {
    throw new Error('过小');
  }
  if (amountRandomUpper > budget) {
    throw new Error('过小');
  }
}

结束

这当中还是存在很多问题,有什么好的建议希望可以指出

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用JQuery调用Session的实现代码
Oct 29 Javascript
JavaScript中变量提升 Hoisting
Jul 03 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
Dec 23 Javascript
jquery win 7透明弹出层效果的简单代码
Aug 06 Javascript
jQuery 快速结束当前正在执行的动画
Nov 20 Javascript
详解参数传递四种形式
Jul 21 Javascript
layui导航栏实现代码
May 19 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
Jul 11 Javascript
vue.js做一个简单的编辑菜谱功能
May 08 Javascript
详解jQuery如何实现模糊搜索
May 10 jQuery
微信小程序 生成携带参数的二维码
Oct 23 Javascript
node爬取新型冠状病毒的疫情实时动态
Feb 06 Javascript
微信小程序之蓝牙的链接
Sep 26 #Javascript
jQuery EasyUI Layout实现tabs标签的实例
Sep 26 #jQuery
jQuery EasyUI开发技巧总结
Sep 26 #jQuery
jQuery 开发之EasyUI 添加数据的实例
Sep 26 #jQuery
微信小程序中post方法与get方法的封装
Sep 26 #Javascript
javascript 产生随机数的几种方法总结
Sep 26 #Javascript
Three.js实现浏览器变动时进行自适应的方法
Sep 26 #Javascript
You might like
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
use jscript Create a SQL Server database
2007/06/16 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
13个PHP函数超实用
2015/10/21 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
2017/02/23 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
Python中用altzone()方法处理时区的教程
2015/05/22 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
python读取txt文件,去掉空格计算每行长度的方法
2018/12/20 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
java程序员面试交流
2012/11/29 面试题
写好自荐信的要点
2013/11/06 职场文书
求职面试个人自我评价
2014/02/28 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
客房部经理岗位职责
2015/02/02 职场文书
2015年医院药剂科工作总结
2015/05/04 职场文书
安全生产培训心得体会
2016/01/18 职场文书