Element表单验证(1)

首先要掌握Element官方那几个表单验证的例子,然后才看下面的教程。

Element主要使用了async-validator这个库作为表单验证

async-validator主要分成三部分

  • Validate
  • Options
  • Rules

其中,对于我们使用Element的来说,Rules最重要,也是这部分内容较多的。

async-validator各部分

async-validator基本使用

import Validator from 'async-validator'

// 规则的描述
const rules = {
name: { type: 'string', required: true }
} // 根据规则生成验证器
const validator = new Validator(rules) // 要验证的数据源
const source = {
name: 'LanTuoXie'
} // 验证后的回调函数
function callback (errors, fileds) {
if (errors) {
// 验证不通过,errors是一个数组,记录那些不通过的错误信息
// fileds是所有数据源的字段名,也即上面的source的'name'
// 验证是根据字段名来的,rules.name 对应 source.name。 字段名要一样才会验证
}
// 下面是验证通过的逻辑
} // 验证数据源是否符合规则
validator.validate(source, callback)

Validate

就是上面例子中的validator.validate,是一个函数

function(source, [options], callback)

source和callback对应上面的例子。

Options

Options有两个值

  • first: 一个布尔值,如果出现字段不通过,终止验证后面的字段
  • firstFields: 布尔值或者字符串,如果验证一个字段时,一个规则不通过,终止验证下个规则(一个字段,多个规则的情况)

firstFields是针对单个字段多规则的情况下使用,而first是针对所有字段

Rules

最重要的还是Rules。定义rule可以有三种形式,但是rules字段名一定要和数据源source的字段名一致。

  • 函数的方式:{ name(rule, value, callback, source, options) {} }
  • 对象的方式: { name: { type: 'string', required: true } }
  • 数组的方式: { name: [{ type: 'string' }, { required: true }] }

上面可以看到,字段名name可以有3种方式定义规则,在使用Element的时候还是推荐对象和数组的方式,这个两个比较简单,函数看情况使用。

除了typerequired还有哪些用法可以用以及有什么用?

Rules的默认规则

  • type: 要被验证的数据的类型如urlnumber
  • required: 是否必填
  • pattern:使用正则来验证
  • min: 数据的长度的最小值 (数据类型必须是stringarray)
  • max: 数据的长度的最大值 (数据类型必须是stringarray)
  • len: 数据的长度必须等于这个值 (数据类型必须是stringarray)
  • enum: 数据的值必须等于这个枚举数组某个元素 { enum: [1, 2, 3] }
  • transform: 一个钩子函数,在开始验证之前可以对数据先处理后验证,如吧number转为string后再验证
  • message: 报错的提示信息可以是字符串也可以是jsx标签<span>Name is required</span>
  • validator: 自定义验证函数以及报错信息 validator(rule, value, callback)
  • 还有一个Deep Rules是处理object或者array类型的,使用了fieldsdefaultField
  • fields:Deep Rules的时候使用,定义下一层的字段名以及规则
  • defaultField: Deep Rules的时候使用,所有下一层的字段都会采用该规则,可以被fields替换

默认的Type

  • string:必须是String类型,规则不设置type默认是这个
  • number:必须是Number类型,如果后台返回的数据是字符串,可以用transform转为Number类型,字符串类型的数字('12')不会通过,要注意
  • boolean: 必须是Boolean类型
  • method: 必须是Function
  • regexp:必须是正则RegExp
  • integer:是Number类型的正整数
  • float: 是Number类型的浮点数
  • array: 是Array.isArray通过的数组
  • object: Array.isArray不通过的Object类型
  • enum: 要先定义enum,然后值必须是enum某个值
  • date: 必须是Date对象的实例
  • url: String类型且符合链接格式
  • hex
  • email: String类型,且符合邮箱格式

Deep Rules使用demo

cosnt urls = ['http://www.baidu.com', 'http://www.baidu.com']
// 一个urls的数组,
const rules = {
urls: {
type: 'array',
required: true,
defaultField: { type: 'url' }
}
}
const ids = {
name: 'LanTuoXie',
age: 12,
spc: '帅'
} const rules = {
ids: {
type: 'object',
required: true,
fields: {
name: { type: 'string', required: true },
age: { type: 'number', required: true, tranform: Number },
spc: { type: 'string', required: true }
}
}
}

自定义验证validator

validator(rule, value, callback)

  • rule: 记录了验证字段的字段名以及规则的信息
  • value: 要验证的值
  • callback: 如果callback()代表验证通过,如果callback(new Error('错误要提示的信息'))代表验证不通过
// 验证是[min, max]范围内的正整数
const betweenInt = (min, max) => (rule, v, cb) => {
const isBetween = v >= min && v <= max
const isInt = /^[0-9]+$/.test(v)
if (isBetween && isInt) return cb() return cb(new Error(`要求是在${min}到${max}的正整数 [${min}, ${max}]`))
} const rules = {
num: { validator: betweenInt(1, 5), required: true }
}

Element表单验证(1)的更多相关文章

  1. Element表单验证(2)

    Element表单验证(2) 上篇讲的是async-validator的基本要素,那么,如何使用到Element中以及怎样优雅地使用,就在本篇. 上篇讲到async-validator由3大部分组成 ...

  2. async-validator:Element表单验证

    转载文章:Element表单验证(2)   Element表单验证(2) 上篇讲的是async-validator的基本要素,那么,如何使用到Element中以及怎样优雅地使用,就在本篇. 上篇讲到a ...

  3. vue element 表单验证不通过,滚动到固对应位置

    我们在使用elementIUI实现表单验证,内容比较多的时候,提示内容会被遮挡,这时候用户不清楚什么情况,还会连续点击提交按钮.这个时候需求来啦:我们需要在表单验证不通过的时候,页面滚动到对应的位置. ...

  4. vue+element 表单验证

    效果图 <template> <div class="formValidator"> <div v-for="(item,index) in ...

  5. Element表单验证规则

    一.简单的逻辑验证使用方法: 方法步骤: 1.在html中给el-form增加 :rules="rules" 2.html中在el-form-item 中增加属性 prop=&qu ...

  6. Element 表单验证,不清空数据,仅仅取消表单字段校验

    重置表单 this.$refs['ageForm'].resetFields() // 表单重置 仅清空校验 this.$refs['ageForm'].clearValidate() // 清除验证

  7. 解决“element表单验证输入的数字检测出来是string”的问题

    form表单: 校验规则: 注意:一.数字类型的验证需要在 v-model 处加上 .number 的修饰符,这是 Vue 自身提供的用于将绑定值转化为 number 类型的修饰符.二.校验中是否添加 ...

  8. element表单验证

    rules: { name:[{ required: true, message: '请输入用户名', trigger: 'blur' },{ min: 2, max: 5, message: '长度 ...

  9. JS判断字符串长度,结合element el-input el-form 表单验证(英文占1个字符,中文汉字占2个字符)

    首先看看判断字符串长度的几种方法(英文占1个字符,中文汉字占2个字符) 方法一: function strlen(str) { var len = 0; for (var i = 0; i < ...

随机推荐

  1. 为什么CPU缓存会分为一级缓存L1、L2、L3?有什么意义?

    https://baijiahao.baidu.com/s?id=1598811284058671259&wfr=spider&for=pc 简介:CPU缓存是CPU一个重要的组成部分 ...

  2. [转]LazyLoad.js及scrollLoading.js

    本文转自:http://blog.csdn.net/ning109314/article/details/7042829 目前图片延迟加载主要分两大块,一是触发加载(根据滚动条位置加载图片):二是自动 ...

  3. (转)awk数组详解及企业实战案例

    awk数组详解及企业实战案例 原文:http://www.cnblogs.com/hackerer/p/5365967.html#_label03.打印数组:1. [root@nfs-server t ...

  4. 案例50-crm练习dao层的抽取BaseDao

    1 抽取BaseDao 2 BaseDao设计思路 3 BaseDao接口书写 package www.test.dao; import java.io.Serializable; import ja ...

  5. C/C++中 static 的作用

    在C中,有三个作用: 1.修饰全局变量: 作用是隐藏,也就是这个全局变量仅在本文件中可见. 2.修饰局部变量: 作用是扩展变量的生存期,令这个局部变量成为静态的. 3.修饰函数: 作用是隐藏,将此函数 ...

  6. java多线程之原子变量

    看链接博客:http://blog.csdn.net/u011116672/article/details/51068828

  7. Oracle安装后忘记用户名或密码+创建新登陆用户

    新安装的Oracle11g,不料在使用的时候没记住安装时的用户名和密码. 不用担心,打开sqlplus. 按如下步骤,新建一个登陆用户: 第一步:以sys登陆  sys/密码 as sysdba  此 ...

  8. JEECMS站群管理系统-- Jeecms安装过程

    Jeecms是基于java技术研发的站群管理系统,稳定.安全.高效.跨平台.无限扩展是jeecms 的优点,系统支持mysql.oracle.sqlserver.db2等主流数据库. 轻松建设大规模网 ...

  9. 简单的JS统计静态网站访问次数

    最简单的静态页面刷新 <html> <head> <meta http-equiv="Content-Type" content="text ...

  10. Hive总结

    一.什么是Hive 1.Hive 由 Facebook 实现并开源 2.是基于 Hadoop 的一个数据仓库 3.可以将结构化的数据映射为一张数据库表 4.并提供 HQL(Hive SQL)查询功能 ...