求助前端大佬,表单验证this.$refs["formMenu"].validate()总是返回false的问题

发布于 2022-09-12 02:53:45 字数 1440 浏览 13 评论 0

在一次重新下载node_modules包之后,所有页面的保存更新提交按钮全都失效了,调试了一下,发现验证方法总是返回false。
代码如下:

handleSubmitMenu() {
      let valid = this.validateMenuForm();
      console.log("最终的valid:"+valid);
      if (valid) {
        if (this.formModel.mode === "create") {
          this.doCreateMenu();
        }
        if (this.formModel.mode === "edit") {
          this.doEditMenu();
        }
      }
    },
    
validateMenuForm() {
      let _valid = false;
      console.log("formMenu object:"+this.$refs["formMenu"]);
      console.log("formMenu status:"+this.$refs["formMenu"].validate());
      console.log("formMenu object:"+this.$refs.formMenu);
      console.log("formMenu status:"+this.$refs.formMenu.validate());
      this.$refs["formMenu"].validate(
        valid => {
        if (!valid) {
           console.log("valid if:"+valid)
          this.$Message.error(this.$t('请完善信息'));
          _valid = false;
        } else {
           console.log("valid else:"+valid)
          _valid = true;
          console.log("_valid else:"+_valid)
        }
      });
       console.log("最终:_valid:"+_valid)
      return _valid;
    },

我实在看不出代码有啥问题,如果我没完成必要的信息时,能够进if语句提醒,完善信息之后再提交,则验证方法里的else字句的代码总是返回不对。

表单未完善时的执行log:
image.png
表单完善时的执行log:
image.png

使用的是Vue的iview-admin框架,求助,万分感谢!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

多情出卖 2022-09-19 02:53:45

elForm的validate方法的回调并不是同步的,而是在Promise中,所以你这么写肯定是不对的

async handleSubmitMenu() {
  let valid = await this.validateMenuForm();
  console.log("最终的valid:"+valid);
  if (valid) {
    if (this.formModel.mode === "create") {
      this.doCreateMenu();
    }
    if (this.formModel.mode === "edit") {
      this.doEditMenu();
    }
  }
},

async validateMenuForm() {
  let _valid = false;
  console.log("formMenu object:"+this.$refs["formMenu"]);
  console.log("formMenu status:"+this.$refs["formMenu"].validate());
  console.log("formMenu object:"+this.$refs.formMenu);
  console.log("formMenu status:" + this.$refs.formMenu.validate());
  try {
    _valid = await this.$refs["formMenu"].validate();
  } catch (error) {
    this.$Message.error(this.$t('请完善信息'));
    _valid = false
  }
  console.log("最终:_valid:"+_valid)
  return _valid
},
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文