介绍需求

熟悉并优化公司项目的第五天,领导说能不能把表单验证封装一下,我打开代码一看

由于是后台管理系统,无数个需要验证的输入框,由于截图长度受限,只能展示部分,类似于这种页面还有无数个!代码重复率非常高,难怪需要封装了。

实现思路

1.将代码从页面中抽离,在utils文件夹新建js文件存储

2.新增js代码

let FormValidate = (function () {
// eslint-disable-next-line
function FormValidate() {}
// From表单验证规则 可用于公用的校验部分
FormValidate.Form = function () {
return {
// 用户角色,姓名的验证规则
name: function (rule, value, callback) {
if (!value) {
return callback(new Error('用户角色不能为空'))
} else {
callback()
}
},
// 角色描述验证规则
description: function (rule, value, callback) {
if (!value) {
return callback(new Error('用户描述不能为空'))
} else {
callback()
}
},
}
}
return FormValidate
}())
exports.FormValidate = FormValidate

3.在页面中引入

附上代码:

// 自封装表单验证
import Format from "@/utils/FormValidation.js";

4.接下来,三方联动

HTML部分:

有三个非常重要的属性

1.model 表单数据对象

2.rules 表单验证规则

3.prop 表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的

js部分:

data(){
return{
//定义表单数据对象
rules: {
rolename: "",
description: "",
type: true,
},
//element 表格组件 表单验证规则
vailmsg: {
rolename: [
{
required: true,
validator: Format.FormValidate.Form().name,
trigger: "blur",
},
],
description: [
{
required: true,
validator: Format.FormValidate.Form().description,
trigger: "blur",
},
],
},
}
}

至此,封装表单验证结束,需要新的验证,直接去utils里的js新建然后导入页面引用即可!

更新优化:

实现传参,减少公共js代码过多

页面调用部分这样写:

Format.FormValidate.Form("用户角色不能为空").notEmpty,

公共js里这样写:

let FormValidate = (function () {
// eslint-disable-next-line
function FormValidate() {}
// From表单验证规则 可用于公用的校验部分
FormValidate.Form = function (errorMessage) {
// errorMessage 是我们传过来的提示文字 这样就可以一个验证多用 不用重复写
return {
// 输入框不为空的验证规则
notEmpty: function (rule, value, callback) {
console.log('e :>> ', errorMessage);
if (!value) {
return callback(new Error(errorMessage))
} else {
callback()
}
},
}
}
return FormValidate
}())
// 向外暴露内部变量
exports.FormValidate = FormValidate

如何在Vue的项目里对element的表单验证进行封装的更多相关文章

  1. vue+element 动态表单验证

    公司最近的项目有个添加动态表单的需求,总结一下我在表单验证上遇到的一些坑. 如图是功能的需求,这个功能挺好实现的,但是表单验证真是耗费了我一些功夫. vue+element在表单验证上有一些限制,必须 ...

  2. 关于vue.js element ui 表单验证 this.$refs[formName].validate()的问题

        方法使用前需了解: 来自”和“小编的小提示: 首先打印一下this.$refs[formName],检查是否拿到了正确的需要验证的form. 其次在拿到了正确的form后,检查该form上添加 ...

  3. react 项目实战(三)表单验证

    我们需要记录每一个字段当前的有效状态,有效时隐藏错误信息,无效时显示错误信息. 而这个有效/无效,可以在表单值改变的时候进行判断. 我们对/src/pages/UserAdd.js进行修改: 首先修改 ...

  4. vue踩坑:vue+ element ui 表单验证有值但验证失败。

    一.如图:有值但是验证失败 二. <el-form :model="form" :rules="rules"> <el-form-item l ...

  5. element自定义表单验证

    element-ui框架下修改密码弹窗进行表单验证. 除了基础校验,密码不为空,长度不小于6字符,需求中还需校验密码由数字和字母组合. 处理代码如下: <el-dialog :visible.s ...

  6. vue iview modal弹出框 form表单验证

    一.ref="addApply" :model="addApply" :rules="ruleValidate"   不要忘记prop 二. ...

  7. Element Form表单实践(上)

    作者:小土豆biubiubiu 博客园:https://www.cnblogs.com/HouJiao/ 掘金:https://juejin.im/user/58c61b4361ff4b005d9e8 ...

  8. 关于Web项目里的给表单验证控件添加结束时间不得小于开始时间的验证方法,日期转换和前台显示格式之间,还有JSON取日期数据格式转换成标准日期格式的问题

    项目里有些不同页面间的日期显示格式是不同的, 第一个问题: 比如我用日期控件WdatePicker.js导包后只需在input标签里加上onClick="WdatePicker()" ...

  9. Vue项目之实现登录功能的表单验证!

    Vue项目之实现登录功能的表单验证! 步骤: 配置 Form表单验证; 1.必须给el-from组件绑定model 为表单数据对象 2 给需要验证的表单项 el-form-item 绑定 prop 属 ...

随机推荐

  1. 面试遇到的坑JS深拷贝和浅拷贝

    首先要搞明白深拷贝和钱拷贝的区别要先搞明白 栈和堆的区别 一.栈 栈存储基础数据类型,如: String.Number.Boolean.Null.Underined,这些简单的基础数据类型能够直接存储 ...

  2. spring总结归纳

    愿历尽千帆,归来仍是少年 简介 spring: 1.是分层的full-stack(全栈)轻量级开源框架.2. 内核:IOC和AOP.3.提供web层springMvc和业务层事务管理,整合众多的开源框 ...

  3. [刷题] PTA 03-树3 Tree Traversals Again

    用栈实现树遍历 1 #include<stdio.h> 2 #include<string.h> 3 #define MAXSIZE 30 4 5 int Pre[MAXSIZ ...

  4. Java 值类型和引用类型

    现实世界中的值和引用 假定你在读一份非常棒的东西,希望一个朋友也去读它.为了避免被人投诉支持盗版,进一步假定它是公共领域中的一份文档.那么,需要为朋友提供什么才能让他读到文档呢? 这完全取决于阅读的内 ...

  5. STM32电路设计注意

    以后画STM32的电路板 VDDA一定要接 张JF说  VDDA是给内部的时钟电路供电的 还有一定要留 串口或者  下载调试口(串口) 或者显示器接口 输入输出设备最好都留着 这样才能方便调试

  6. BXL文件怎样转换为AD LIB文件

    https://jingyan.baidu.com/article/48b558e326e1b17f39c09a57.html

  7. 图解 Redis | 不就是 AOF 持久化嘛

    AOF 日志 试想一下,如果 Redis 每执行一条写操作命令,就把该命令以追加的方式写入到一个文件里,然后重启 Redis 的时候,先去读取这个文件里的命令,并且执行它,这不就相当于恢复了缓存数据了 ...

  8. python 判断对象是否相等以及eq函数

    当对两个点的实例进行值的比较时,比如p1=Point(1,1) p2=Point(1,2),判断p1==p2时__eq__()会被调用,用以判断两个实例是否相等.在上述代码中定义了只要x和y的坐标相同 ...

  9. openssl自签发证书

    DOMAIN=www.example.com openssl genrsa -out ${DOMAIN}.key # 生成私有key openssl req -x509 -new -nodes -ke ...

  10. 3. servlet 和 springmvc框架关系

    在springmvc上我们会编写很多相关的配置 编写springmvc.xml 配置映射器 配置 处理适配器 ... web.xml 配置前端控制器 (DispatcherServlet) 官网: h ...