一次el-form表单校验的爬坑记录

项目中有多个表单的验证功能,调试过程中发现,第二个 form 总是没有返回校验结果,历经千辛万苦,终于发现了原因。

methods: {
	Verify() {
		// validate
		var autoVerify = this.$refs.AutoForm
		var agentVerify = this.$refs.AgentForm
		var b1 = autoVerify.validate()
		var b2 = agentVerify.validate()
		return Promise.all([b1, b2])
	},
	Clear() {
		this.$refs['AutoForm'].resetFields()
		this.$refs['AgentForm'].resetFields()
	},
},

原来是因为第二个表单使用了自定义校验,最后没有调用callback!!

var checkAddress = (rule, value, callback) => {
  setTimeout(() => {
    var vals = value.split(/[,,;;(\s)]/);
    vals = removeEmpty(vals);
    if (vals.length !== 3) {
      callback(
        new Error("收件人,收件人联系方式,地址,以逗号或分号或空格分隔"),
      );
    } else {
      if (!vals[0] || vals[0].trim().length == 0) {
        callback(new Error("收件人为空"));
      } else if (!vals[1] || vals[1].trim().length == 0) {
        callback(new Error("收件人联系方式为空"));
      } else if (!vals[2] || vals[2].trim().length == 0) {
        callback(new Error("地址为空"));
      }
      // 原因在这!没有调用 callback
      else callback();
    }
  }, 500);
};
posted @ 2021-04-22 15:23  yaoqinglin_mtiter  阅读(350)  评论(0编辑  收藏  举报