写一个vue表单验证插件(vue-validate-easy)

需求

目标:简单易用可扩展

如何简单

开发者要做的

  1. 写了一个表单,指定一个name,指定其验证规则。
  2. 调用提交表单方法,可以获取验证成功后的数据。
  3. 调用重置表单方法重置表单
  4. 自定义验证方法

程序应该做的

  1. 获取表单元素,绑定事件
  2. 有输入时,获取表单值,使用开发者指定的规则进行验证,若验证错误给予错误提示。

实现方法

  • 获取原生表单元素,vue指令获取到的是包裹原生表单元素的外层元素,这里我使用data-type属性来获取原生表单元素
  • 验证规则,验证参数,自定义错误提示语 由 vue的指令值来获取
  • 提交时,我们需要一个表单标识,这里我使用了data-scope属性来对表单进行分组
  • 重置,通过data-scope重置整个表单

常用方法

  • 懒验证,通过.lazy指令修饰符
  • 远程验证, 通过async await
  • 延时验证, .deay指令修饰符,和data-delay属性
  • 表单主动验证,单字段主动验证
  • 单字段表单重置

可扩展

  • 错误消息自定义
  • 验证方法自定义
  • 错误提示处理自定义
  • 自定义表单元素(不借助原生元素)

完成后的使用代码

  1. // 你只要指定 data-scope data-name data-type v-validate-easy 这四个属性的值,然后通过调用this.V.$submit(scope)就可以进行提交表单了
  2. <form>
  3. <div class="my-form-group" data-scope="register" data-name="email" data-type="input"
  4. v-validate-easy="[['required','邮箱为必填项目'],['email']]">
  5. <label>
  6. <div class="label">邮箱</div>
  7. <input class="input" type="text" spellcheck="false" placeholder="请输入邮箱"/>
  8. </label>
  9. </div>
  10. <div id="pwd" class="my-form-group" data-scope="register" data-name="password" data-type="input"
  11. v-validate-easy="[['required','密码不能为空'],['password'],['maxLength',[32],'密码最长为32位']]">
  12. <label>
  13. <div class="label">密码</div>
  14. <input class="input" type="text" spellcheck="false" placeholder="请再次输入密码"/>
  15. </label>
  16. </div>
  17. <div class="my-form-group" data-scope="register" data-name="password" data-type="input"
  18. v-validate-easy="[['required','确认密码不能为空'],['equalTo',['pwd'],'密码输入不一致']]">
  19. <label>
  20. <div class="label">确认密码</div>
  21. <input class="input" type="text" spellcheck="false" placeholder="请输入邮箱"/>
  22. </label>
  23. </div>
  24. <div class="btn-group">
  25. <button class="my-btn" @click.prevent="submit('register')">注册</button>
  26. <button class="my-btn" @click.prevent="reset('register')">重置</button>
  27. </div>
  28. </form>
  1. methods: {
  2. reset(scope) {
  3. this.V.$reset(scope)
  4. },
  5. submit(scope) {
  6. this.V.$submit(scope, (canSumit,data) => {
  7. // canSumit为true时,则所有该scope的所有表单验证通过
  8. if(!canSumit) return
  9. // 发送请求
  10. axios({ url: '/test',data, method: 'post'})
  11. .then(() => {
  12. // 成功响应处理
  13. })
  14. .catch(() => {
  15. // 错误处理
  16. })
  17. })
  18. }
  19. },

对自定义组件使用,就更加简洁

  1. <form>
  2. <h3>用户登录</h3>
  3. <my-input label="用户名" data-scope="login" data-name="username" v-validate-easy="[['required']]"></my-input>
  4. <my-input label="密码" data-scope="login" type="password" data-name="pwd" v-validate-easy="[['required']]"></my-input>
  5. <div class="btn-group">
  6. <button class="my-btn" @click.prevent="submit('login')">登录</button>
  7. <button class="my-btn" @click.prevent="reset('login')">重置</button>
  8. </div>
  9. </form>

vue-validate-easy github地址

欢迎大家star,对该项目有什么问题和建议,欢迎提issue

vue-validate-easy 文档地址

写一个简单易用可扩展vue表单验证插件(vue-validate-easy)的更多相关文章

  1. Vue表单验证插件的制作过程

    一.表单验证模块的构成 任何表单验证模块都是由 配置――校验――报错――取值 这几部分构成的. 配置: 配置规则 和配置报错,以及优先级 校验: 有在 change 事件校验, 在点击提交按钮的时候校 ...

  2. Vue 表单验证插件

    verify github:https://github.com/liuyinglong/verifynpm:https://www.npmjs.com/package/vue-verify-plug ...

  3. 一个不错的vue表单验证插件

    github文档 用着不错,官方的文档例子很简单 <body> <div id="app"> <validator name="valida ...

  4. JQuery表单验证插件EasyValidator,超级简单易用!

    本插件的宗旨是:用户无需写一行JS验证代码,只需在要验证的表单中加入相应的验证属性即可,让验证功能易维护,可扩展,更容易上手. DEMO中已经包含了常用的正则表达式,可以直接复用,为了考虑扩展性,所以 ...

  5. nice-validator表单验证插件的简单使用

    前言 前端表单校验是过滤无效数据.假数据.有毒数据的第一步,是数据安全的第一道关卡,虽然我们不能100%相信客户端提交的数据(真正的校验还得在服务端进行),但设置前端表单校验也是至关重要的,自己写逻辑 ...

  6. jQuery Validate 表单验证插件----通过name属性来关联字段来验证,改变默认的提示信息,将校验规则写到 js 代码中

    一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二. 添加一个另外一个插件jquery.validate.messages_cn.js. ...

  7. jQuery Validate 表单验证插件----利用jquery.metadata.js将校验规则直接写在class属性里面并定义错误信息的提示

    一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二. 添加一个另外一个插件jquery.metadata.js 并把校验规则写在控件里面 ...

  8. vue表单验证--veevalidate使用教程

    vue表单验证----vee-validate使用教程 官网:https://baianat.github.io/vee-validate/ 一.安装 npm install vee-validate ...

  9. jQuery Validate 表单验证插件----自定义一个验证方法

    一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二.引入依赖包 <script src="../../scripts/j ...

随机推荐

  1. 【openstf】自己的云测平台——mac安装openstf

    openstf的github地址:https://github.com/openstf/stf 上图可以清晰看出openstf的使用场景和效果   openstf是一个web应用程序,用于远程调试智能 ...

  2. 安全运维 - Linux系统攻击回溯

    入侵排查思路 (1)- 日志分析 日志分析 默认日志路径: /var/log 查看日志配置情况: more /etc/rsyslog.conf 重要日志: 登录失败记录: /var/log/btmp ...

  3. String类为什么是final

    String 本身一个对象,对象在jvm启动的时候就要实例化和其他类调用就要实例化,第一性能,第二安全,因为string的高频繁的使用,如果被继承,哪里性能将会大大降低,因为不能被继承,换句话来说就比 ...

  4. jdk下载安装后为什么要设置环境变量?

    因为电脑不知道javac这个命令是在C:\Program Files\JAVA\jdk1.8.0_65\bin的这个路径下面,所以我们要设置好环境变量,来让电脑知道其路径

  5. 在 linux 中 find 和 grep 的区别??

    Linux 系统中 grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep 全称是 Global Regular Expression Print,表示全局 ...

  6. c++知识点总结3

    http://akaedu.github.io/book/ week1 引用:相当于变量的别名.下面r和n就相当于同一回事 ; int &r=n; 引用做函数参数: void swap(int ...

  7. Vue学习之旅:todomvc的学习练习

    一.前奏 1.todomvc官网地址:http://todomvc.com/ 查阅文档和下载插件都可以到这个官网上找. 2.上GitHub上搜索下载有人做的现成的本地模板:进入GitHub搜索todo ...

  8. HTML创建链接框

    使用CSS样式创建一个漂亮的链接框吧 <!DOCTYPE html> <html> <head> <style> a:link,a:visited { ...

  9. 时间戳位数不够13位,通过es6 的padEed补零

    if(val.toString().length == 10){ val = val.toString().padEnd(13,"0")*1 //不够十三位放后面补零,超过13位也 ...

  10. NodeJS、npm安装步骤和配置(windows版本)

    https://jingyan.baidu.com/article/48b37f8dd141b41a646488bc.html 上面这个链接很详细了,怕它没了自己记一遍.我的简洁一点. 1. 打开no ...