1. // utils/validator.js
    2. import {isArray, isFunction} from "@/utils/dataType";
    3. import {Message} from "element-ui";
    4. const validatorEmpty = function (value) {
    5. return !!value;
    6. }
    7. const validatorMinLength = function (value, ruleValue) {
    8. return value.length >= ruleValue
    9. }
    10. const validatorMaxLength = function (value, ruleValue) {
    11. return value.length <= ruleValue
    12. }
    13. const validatorLength = function (value, ruleValue) {
    14. return value.length <= ruleValue
    15. }
    16. const validatorEqual = function (value, ruleValue) {
    17. return value !== ruleValue
    18. }
    19. const Validator = function (value, ruleValue) {
    20. this.value = value
    21. this.ruleValue = ruleValue
    22. }
    23. const systemMethodMap = {
    24. 'empty': validatorEmpty,
    25. 'minLength': validatorMinLength,
    26. 'maxLength': validatorMaxLength,
    27. 'length': validatorLength,
    28. 'equal': validatorEqual
    29. }
    30. const systemMethodMapKeys = Object.keys(systemMethodMap)
    31. for (let systemMethodMapKey of systemMethodMapKeys) {
    32. Validator.prototype[systemMethodMapKey] = function() {
    33. return systemMethodMap[systemMethodMapKey](this.value, this.ruleValue)
    34. }
    35. }
    36. export const validatorForm = function (rules) {
    37. let _validate = false
    38. if (isArray(rules)) {
    39. for (let i = 0; i < rules.length; i++) {
    40. let item = rules[i]
    41. let {value, rule, errorMsg, validator} = item
    42. let validate = false
    43. if (rule) {
    44. if (rule.includes(':')) {
    45. const ruleArray = rule.split(':')
    46. const ruleValue = ruleArray[1]
    47. rule = ruleArray[0]
    48. validate = new Validator(value, ruleValue)[rule]()
    49. } else {
    50. validate = new Validator(value)[rule]()
    51. }
    52. if (!validate) {
    53. _validate = validate
    54. Message.warning(errorMsg)
    55. break
    56. }
    57. } else if(isFunction(validator)) {
    58. const errMsg = validator(value)
    59. if (errMsg) {
    60. _validate = validate
    61. Message.warning(errorMsg)
    62. break
    63. }
    64. }
    65. }
    66. }
    67. return _validate
    68. }

    使用
    image.png

    rules是一个数组,每一项是一个对象,该对象有4个参数
    value 要验证的值
    rule 内置规则名称
    errorMsg 错误提示
    validator 自定义验证函数, 返回错误信息
    当使用rule是,则无法使用自定义验证函数