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 validate 自定义验证方法介绍 日期验证
Feb 27 Javascript
JS+CSS实现仿msn风格选项卡效果代码
Oct 22 Javascript
js实现点击图片自动提交action的简单方法
Oct 16 Javascript
利用JS轻松实现获取表单数据
Dec 06 Javascript
详解vue-router和vue-cli以及组件之间的传值
Jul 04 Javascript
bootstrap Table服务端处理分页(后台是.net)
Oct 19 Javascript
vue生成token保存在客户端localStorage中的方法
Oct 25 Javascript
详解nuxt sass全局变量(公共scss解决方案)
Jun 27 Javascript
jquery判断滚动条距离顶部的距离方法
Sep 05 jQuery
在小程序中使用canvas的方法示例
Sep 17 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
May 13 jQuery
微信小程序文章列表功能完整实例
Jun 03 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图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
2014/11/04 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
ajax java 实现自动完成功能
2012/12/19 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
python requests.post带head和body的实例
2019/01/02 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
python实现指定ip端口扫描方式
2019/12/17 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
浅谈Python 函数式编程
2020/06/20 Python
详解Python 中的容器 collections
2020/08/17 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
Shell脚本如何向终端输出信息
2014/04/25 面试题
生产部岗位职责范文
2014/02/07 职场文书
授权委托书怎么写
2014/04/03 职场文书
大学学习计划书范文
2014/05/02 职场文书
社区务虚会发言材料
2014/10/20 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书