ElementUI中为什么使用this.$refs.form.validate验证成功却直接跳过

ElementUI中为什么使用this.$refs.form.validate验证成功却直接跳过

  • 问题背景

    在写一个Vue练手项目时,我使用rulse对表单中用户输入的数据进行校验,但莫名奇妙就发现:当我点击提交表单时,表单中的数据都验证成功了,但是却发现没有任何反应!经过debug发现,程序在运行到this.$refs.form.validate((valid) =>{})这一行时,直接就跳过了(○´・д・)ノ  直接蒙圈了😵

  • 问题复现
    在这里插入图片描述

      data() {
        return {
          rules: { // 设置表单校验规则
            name: [ // 姓名判断
              { required: true, message: '姓名不能为空' }
            ],
            age: [ // 年龄判断
              { required: true, message: '年龄不能为空' },
              { type: 'integer', message: '年龄不合法' },
              {
                validator(rule, value, callback) {
                  if (!(0 < value && value < 200)) {
                    return callback(new Error('年龄不合法'))
                  } /* else {
                    return callback()
                  } */
                }
              }
            ],
            sex: [// 性别判断
              { required: true, message: '性别不能为空' },
            ],
            birthday: [ // 出生日期判断
              { required: true, message: '日期不能为空' }
            ],
            address: [// 地址判断
              { required: true, message: '地址不能为空' }
            ]
          }
        }
      },
      methods: {
        // 新增窗口提交表单按钮
        submit() {
          debugger // 问题就出现再下一行!!!
          // 提交前先校验表单
          this.$refs.form.validate((valid) => {
            console.log(valid)
            if (valid) {
              // 表单校验成功,进行后续的逻辑处理
              // 清空表单
              this.$refs.form.resetFields()
              // 隐藏新增弹窗
              this.dialogVisible = false
            }
          })
        }
      }
    
  • 问题分析

    经过“上网搜索”+查看ElementUI官网最终确定了问题的罪魁祸首是validator!当我们在使用rules校验表单时,并且使用了validator后,此时我们在调用this.$refs.form.validate((valid) => {}后,并不会直接走箭头函数中的逻辑,而是直接走validator函数,而在走validator时,它会先寻找该函数中的callback()回调函数,如果没有找到该回调函数,就会直接跳过箭头函数中的逻辑
    在这里插入图片描述

  • 解决方案
    查看rulse中所有的validator函数,然后补齐未添加上的callback()函数
    在这里插入图片描述

参考文章

  • https://blog.csdn.net/weixin_43592750/article/details/113617251
  • https://www.jianshu.com/p/b150eac5ea2e
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识汲取者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值