饿了么组件库element-ui正则表达式验证表单,后端验证表单。
前言
老是遇到一些朋友问一些element-ui组件使用相关的基础问题,因为官方文档上并没有提供所有琐碎的功能代码demo。从这里开始我会根据我实际遇到的问题记录一些常见的官方文档没有详述的功能代码,供给大家拓展思路。
1. 以中国大陆手机号验证为例
// 这是组价的代码
<el-form-item prop="mobile">
    <el-input type="text" v-model="ruleForm.mobile" auto-complete="off" placeholder="请输入手机号"></el-input>
</el-form-item>
// 这是rules的代码
mobile: [
    { validator: validateMobile, trigger: 'blur' },
    { required: true, message: '请输入手机号', trigger: 'blur' },
    { pattern: /^1[34578]\d{9}$/, message: '目前只支持中国大陆的手机号码' }
],在element-ui的源码中搜索blur,你会很容易看到除了blur 还有focus、input,非常贴心基本满足了表单验证的入门需求。
2. 表单局部提交后端验证
在一些输入项目较多的表单提交中,比如说注册时填写的用户名,通常我们会对用户名是否重复进行验证,这是就需要调用服务来验证,这种略显复杂的验证,就需要自定义验证规则来实现。看下面的代码:
// 注意validatePass是属于data的,但不在return中。
data () {
let validatePass = (rule, value, callback) => {
    if (value.length >= 8) {
                let params = {
                    'account': value
                }
                axios.post('localhost:8080/verifyUserAccount', params)
                .then(function (response) {
                    if (response.data.err) {
                        callback(response.data.msg)
                    } else {
                        callback()
                    }
                })
                .catch(function () {
                    callback(new Error('服务异常'))
                })
            } else {
                callback()
            }
}
//这是验证规则,当然了你也可以同时使用基本的验证规则
account: [
    { validator: validatePass , trigger: 'blur' }
]注意:validatePass 自定义规则中每个执行流程中都必须附带callback(),这样才能明确通过验证的情况下去掉输入框上的loading。要显示的错误提示则可以new Error(“xxxx”)即可。
3. 综合来看
通常可以把所有规则都写在自定义的规则中,即可实现较为复杂的验证,实际上我们可以再validatePass里面调用根实例下所有data methods...,一个很简单的例子是实现两次输入的密码是否相同的验证,看下面的代码:
let validatePass = (rule, value, callback) => {
            if (value === '') {
                callback(new Error('请再次输入密码'))
            } else if (value !== this.ruleForm.password) {
                callback(new Error('两次输入密码不一致!'))
            } else {
                callback()
            }
        }就这么简单就可以实现非vuejs情况下是非啰嗦的验证。而且样式也不会很丑,当然了任然可以选择自定义样式。这个以后再记录。
4. 写在最后的
以上三点已经完全覆盖了所有表单验证的情况,可以实现非常复杂的验证。正式基于这些原因,我坚信element-ui是正确的选择。我将会继续写一些剪短的文章补充文档的遗漏。同时如果你也跟我一样喜欢element-ui欢迎跟我探讨,我们新建了一个qq群478694438![图片描述][1],方便大家交流。最后喊一下口号:不拘泥于原理,完全立足于实现!
5. 另
文中涉及到的源码我将会上传到讨论群中,不足之处持续更进,共同探讨。
饿了么组件库element-ui正则表达式验证表单,后端验证表单。的更多相关文章
- 饿了吗开源组件库Element模拟购物车系统
		传统的用html+jquery来实现购物车系统要非常的复杂,但是购物车系统完全是一个数据驱动的系统,因此采用诸如Vue.js.angular.js这些框架要简单的多.饿了吗开源的组件库Element是 ... 
- 基于Svelte3.x桌面端UI组件库Svelte UI
		Svelte-UI,一套基于svelte.js开发的桌面pc端ui组件库 最近一直忙于写svelte-ui,一套svelte3开发的桌面端ui组件库.在设计及功能上借鉴了element-ui组件库.所 ... 
- vue统计组件库和ui框架
		UI组件 element ★13489 - 饿了么出品的Vue2的web UI工具套件 Vux ★8133 - 基于Vue和WeUI的组件库 iview ★6634 - 基于 Vuejs 的开源 UI ... 
- 基于vue2.0前端组件库element中 el-form表单 自定义验证填坑
		eleme写的基于vue2.0的前端组件库: http://element.eleme.io 我在平时使用过程中,遇到的问题. 自定义表单验证出坑: 1: validate/resetFields 未 ... 
- vue组件样式添加scoped属性之后,无法被父组件修改。或者无法在本组件修改element UI样式
		在vue开发中,需要使用scoped属性避免样式的全局干扰,但是这样在父组件中是无法被修改的,不仅如此如果项目中用了UI框架比如element Ui,这个时候在本组件也无法修改样式,因为权重问题.但是 ... 
- 上传图片组件封装 element ui
		// element ui 文档地址: http://element.eleme.io/#/zh-CN <template> <div> <div class=" ... 
- vue2.0+Element UI 表格前端分页和后端分页
		之前写过一篇博客,当时对element ui框架还不太了解,分页组件用 html + css 自己写的,比较麻烦,而且只提到了后端分页 (见 https://www.cnblogs.com/zdd20 ... 
- Vue移动组件库Mint UI的安装与使用
		一.什么是 Mint UI 1.Mint UI 包含丰富的 CSS 和 JS 组件,可以提升移动端开发效率 2.Mint UI 按需加载组件 3.Mint UI 轻量化 二.Mint UI 的安装 1 ... 
- react UI组件库 Salt UI
		https://salt-ui.github.io/?spm=a219a.7629140.0.0.JWztQO 
随机推荐
- Pycharm:注释、删除所有注释
			1.# 单行注释 2. ''' 多行注释 ''' 3.删除所有注释 CTRL+R进入替换模式,勾选右上角正则表达式,然后在搜索框输入 #.*,Replace All即可 
- 转 Autofac怎么依赖注入ASP.NET MVC5类的静态方法
			之前我有介绍过怎么在ASP.NET mvc5中实现的Controller的依赖注入.一般是通过Contrller的构造函数的参数或者属性来注入,但是这有一个共同点就是调用这个类的方法一般都是实例方法, ... 
- 9.resultMap元素
			resultMap 是 MyBatis 中最复杂的元素,主要用于解决实体类属性名与数据库表中字段名不一致的情况,可以将查询结果映射成实体对象.下面我们先从最简单的功能开始介绍. 现有的 MyBatis ... 
- 微信小程序防抖
			https://www.cnblogs.com/daviddd/p/12470480.html 1:wxml:设置一个按钮 <button type="primary" bi ... 
- Vue-表单验证-全选-反选-删除-批量删除
			<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ... 
- php 23种设计模型 - 工厂模式
			工厂模式(Factory) 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建 ... 
- tensorflow源码解析系列文章索引
			文章索引 framework解析 resource allocator tensor op node kernel graph device function shape_inference 拾遗 c ... 
- tensorflow源码解析之framework-resource
			目录 什么是resource 如何使用resource 如何管理resource 常用resource 其它结构 关系图 涉及的文件 迭代记录 1. 什么是resource 我们知道,TF的计算是由设 ... 
- 图解|用好MySQL索引,你需要知道的一些事情
			我是蝉沐风. 这一篇文章来聊一聊如何用好MySQL索引. 为了更好地进行解释,我创建了一个存储引擎为InnoDB的表user_innodb,并批量初始化了500W+条数据.包含主键id.姓名字段(na ... 
- shuffle()和sns.FacetGrid()定义
