自定义校验规则

对于多值校验,Form 组件的 validators 属性提供了比较完善的功能来实现自定义校验。对于单值校验,Field 组件内置了 7 种常见规则,具体参考其 rule 属性。如果无法覆盖需求,VEUI 校验规则模块允许你添加自定义规则。

示例

import ruleManager from 'veui/managers/rule'
ruleManager.addRule('range', {
  validate (value, ruleValue) {
    // 仅实现大小校验部分
    let range = value.split('-')
    return +range[0] >= ruleValue.floor && +range[1] <= ruleValue.ceil
  },
  message: '范围值必须在限定区间内',
  priority: 100
})
<template>
<veui-field
  :rules="[{
    triggers: 'change'
    name: 'range',
    value: {
      ceil: 100,
      floor: 50
    }
  }]"
  ...
>...</veui-field>
</template>

API

名称类型描述
validatefunction(value: *, ruleValue: ?*=)校验逻辑,valueField 需要校验的值,ruleValue 可选,根据规则需要添加,表示规则的限定值。
messagefunction | string

默认出错信息。

若类型为 string,可以通过 {ruleValue} 引用 ruleValue{value} 引用 value。例如:

let minLengthRule = {
  validate (value, ruleValue) {
    return !isEmpty(value) ? val.length >= ruleValue : true
  },
  message: '字符长度不能短于 {ruleValue},当前长度 {value}',
  priority: 100
}

若类型为 function,参数为 (ruleValue: ?*=, value: *)。例如:

let minLengthRule = {
  validate (value, ruleValue) {
    return !isEmpty(value) ? val.length >= ruleValue : true
  },
  message (ruleValue, value) {
    return `字符长度不能短于${ruleValue},当前长度${value}`
  },
  priority: 100
}
prioritynumber

规则优先级。数值低优先级高。

名称优先级
required0
numeric10
pattern50
maxLength100
minLength100
max200
min200
在 GitHub 上编辑此页编辑