this.$refs[formName].validate((valid) =>{}) 无效

3 篇文章 0 订阅

elementUI 表单校验,在校验不通过时可以打印出值,校验通过反而不打印了

submitForm(formName) {
    console.log(1111);
    console.log("formName", formName);
    this.$refs[formName].validate((valid) => {
        if (valid) {
//不打印
            this.$message({
               showClose: true,
               type: "success",
               message:'校验通过啦!',
            });
        } else {
//打印了
          this.$message({
            showClose: true,
            type: "error",
            message: "表单验证失败!",
          });
          return false;
        }
    });
},

出现这种情况的原因,可能是还有以下三点导致:

1、表单在验证的时候出错了。 

      每个if条件都必须要有对应的else;并且每个条件 下 都要 callback! 确保在每一种不同的情况下都会执行callback

//错误写法
​​let validate = (rule, value, callback) => {
    if (!this.ruleForm.selDate) {
        callback(new Error("请选择日期"));
    }
};
//正确
let validate = (rule, value, callback) => {
    if (!this.ruleForm.selDate) {
        callback(new Error("请选择日期"));
    } else {
        callback();
    }
};

2、命名传值问题导致

<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px">
</el-form>

<el-button type="primary" :loading="btnLoad" @click="submitForm('ruleForm')">
    提交
</el-button>

'ruleForm' 必须与<el-form>中的ref名称一致,且点击的时候这个名称必须以字符串的格式传值

注意!!!这个名称不能为【name】,name是一个变量,会被识别为字符串属性,从而导致报错!

 3、也有可能是校验时表单的字段名称在data中没有被定义

  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值