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类型的,使用了fields 或defaultField
  • 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 }
}

 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Element表单验证是什么? Vue Element表单验证是一种基于Vue.js和Element组件库的表单验证方式,通过使用Vue提供的数据驱动的方式,实现实时检测表单输入数据的合法性,并在输入无效时提示错误信息。Vue Element表单验证能够有效地防止用户输入不合法数据,提高应用程序的数据质量。 Vue Element表单验证的特点: 1. 数据驱动:Vue利用双向绑定机制,保证了错误信息和表单输入数据的实时更新。 2. 灵活:可以选择自定义验证规则或使用Element库提供的验证方法。 3. 原子性:每个表单项的验证都是独立的,互不干扰。 4. 可扩展:可以通过自定义指令和插件来扩展验证功能。 Vue Element表单验证的实现方式: 1. 在模板使用el-form组件包裹表单项,通过设置rules属性指定验证规则。 2. 在data定义表单数据,通过v-model指令绑定输入框值。 3. 在methods定义提交表单方法,通过this.$refs.form.validate()方法进行表单验证。 4. 根据验证结果来决定是否提交表单数据。 Vue Element表单验证的基本规则: 1. required:必填项。 2. min/max:最小值/最大值。 3. pattern:正则表达式。 4. validator:自定义验证函数。 需要注意的是,使用Element表单验证规则时,需要在el-form-item组件使用prop属性指定绑定的数据项。 Vue Element表单验证的优缺点: 优点: 1. 数据和视图之间绑定紧密,实时更新错误信息和表单数据。 2. 可以选择自定义验证规则或使用Element提供的验证类,具有灵活性。 3. 可以有效预防用户输入不合法数据,提高数据质量。 4. 可扩展性强,可以通过自定义指令和插件来扩展验证功能。 缺点: 1. 对于复杂的表单结构,需要编写大量的验证规则。 2. 使用Element库自带的验证规则时,需要掌握Element库的使用方法。 3. 自定义验证规则时需要了解正则表达式的使用,对于一些开发者来说可能存在一定的难度。 总结: Vue Element表单验证是一种非常方便使用的表单验证方式,能够有效地预防用户输入不合法数据,提高应用程序的数据质量。同时,Vue Element表单验证也具有灵活性和可扩展性,可以根据具体业务需求自定义验证规则或使用Element提供的验证类,实现更加精细的验证效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值