首页 > 技术文章 > element-ui的表单验证this.$refs[formName].validate的代码不执行

shuen 原文

经过排查,如果自定义验证中,每种情况都要写明确和有回调函数callback

     var validatePhone = (rule, value, callback) => {  
          const reg = /^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/;         
            if (value!== "") {
                if (value === "") {
                    callback(new Error("请输入手机号"));
                } else if(value.length==11&&reg.test(value)){
                   callback();
                } else {
                    callback(new Error("请输入正确的手机号"));
                }
            } else {
                callback(new Error("请输入手机号"));
            }
        };

上面是自定义验证,写在data里面。如果验证通过,但是没有加上callback(),则validate里面的代码会一直不执行。

小结:用于判断值的情况用value比较好,

value的值为相对于的表单元素的v-model的值

rule是验证规则,

callback是回调函数,每个判断结束,语句后面要callback(。。)结果给validate,不然validate会一直等待返回的回掉,不往下执行代码。

推荐阅读