element ui -- 带自定义验证的表单 this.$refs[formName].validate()里面的内容不执行

本文介绍了在Element UI中遇到的自定义表单验证问题,特别是针对后端传递的数字参数需要根据min和max进行大小验证的情况。由于Element UI的内置验证规则不支持直接传参,作者通过编写自定义验证函数实现了这一需求。然而,在使用`this.$refs[formName].validate()`时发现验证内容未执行。经过排查,作者发现所有自定义验证的if条件必须闭环,即每个if必须有else,修复这个问题后,验证功能正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目需要自定义验证,需要验证的参数都是后端传过来的,

如果传过来的是数字,就要根据后端返回的min和max验证数字大小,但是element ui没有验证数字大小的方法,但是可以自定义验证规则(官网给的自定义验证方法不能传参),所以有了下面的方法

rules.push({
    validator: (rule, value, callback) => {
      if(min && max){
        if (value > max || value < min){
          return callback(new Error(`输入数值必须在${min}到${max}之间`))
        }
      }else if(max && value > max){
        return callback(new Error(`输入数值必须小于${max}`))
      }else if(min && value < min){
        return callback(new Error(`输入数值必须大于${min}`))
      }
    }
  })

上面这个方法,单个验证规则没问题,但是this.$refs[formName].validate()里面的内容怎么都不执行,
后来

发现!自定义验证的所有if都得闭环也就是,所有的if都得有else

validator: (rule, value, callback) => {
    if(min && max){
      if (value > max || value < min){
        return callback(new Error(`输入数值必须在${min}到${max}之间`))
      }else {
        return callback()
      }
    }else if(max && value > max){
      return callback(new Error(`输入数值必须小于${max}`))
    }else if(min && value < min){
      return callback(new Error(`输入数值必须大于${min}`))
    }else {
      return callback()
    }
  }

这样就没问题~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值