// utils/validator.jsimport {isArray, isFunction} from "@/utils/dataType";import {Message} from "element-ui";const validatorEmpty = function (value) {return !!value;}const validatorMinLength = function (value, ruleValue) {return value.length >= ruleValue}const validatorMaxLength = function (value, ruleValue) {return value.length <= ruleValue}const validatorLength = function (value, ruleValue) {return value.length <= ruleValue}const validatorEqual = function (value, ruleValue) {return value !== ruleValue}const Validator = function (value, ruleValue) {this.value = valuethis.ruleValue = ruleValue}const systemMethodMap = {'empty': validatorEmpty,'minLength': validatorMinLength,'maxLength': validatorMaxLength,'length': validatorLength,'equal': validatorEqual}const systemMethodMapKeys = Object.keys(systemMethodMap)for (let systemMethodMapKey of systemMethodMapKeys) {Validator.prototype[systemMethodMapKey] = function() {return systemMethodMap[systemMethodMapKey](this.value, this.ruleValue)}}export const validatorForm = function (rules) {let _validate = falseif (isArray(rules)) {for (let i = 0; i < rules.length; i++) {let item = rules[i]let {value, rule, errorMsg, validator} = itemlet validate = falseif (rule) {if (rule.includes(':')) {const ruleArray = rule.split(':')const ruleValue = ruleArray[1]rule = ruleArray[0]validate = new Validator(value, ruleValue)[rule]()} else {validate = new Validator(value)[rule]()}if (!validate) {_validate = validateMessage.warning(errorMsg)break}} else if(isFunction(validator)) {const errMsg = validator(value)if (errMsg) {_validate = validateMessage.warning(errorMsg)break}}}}return _validate}
使用
rules是一个数组,每一项是一个对象,该对象有4个参数
value 要验证的值
rule 内置规则名称
errorMsg 错误提示
validator 自定义验证函数, 返回错误信息
当使用rule是,则无法使用自定义验证函数
