今天在写后台管理系统时,用到了表单校验,为了能够校验必填项和类型等,需要用到表单中的 rule校验规则。最终效果如下:
在这里插入图片描述
由于在此页面上,禁用删除两个功能基本类似,因此我是共用的一个弹窗展示。

所以导致,在禁用页面表单校验完成后,再进入删除页面时,在没有点击提交按钮时,就直接进行了表单校验,提示了校验报错信息。这样并不影响使用,但是页面美观度会差很多。

因此需要在进入此弹窗页面时,清除表单校验。

在这里插入图片描述

clearValidate的用法

我从网上找到的校验方法是:this.$refs[formName].clearValidate();
我的想法是:在关闭弹层时,直接清空表单的校验结果。

代码如下:
html部分:给el-form添加:before-close="disableClose",然后函数对应的代码如下:

 disableClose() {
   this.disableForm = {};
    this.$refs['disableForm'].clearValidate();
    this.dialogDisable = false;
},

上面的代码中,为了保证校验生效,先把this.disableForm清空了,这个也是百度找到了其他大神提供的思路。
然而并没有什么卵用。。。

于是我想到,在弹窗打开时,清空表单校验会不会生效。

于是代码如下:

 handleDisable(index, row) {
    this.dialogDisable = true;
    this.disableForm = {
        id: row.id,
        disablePictures: [],
        operator: this.userName
    }
    this.$nextTick(() => {
        this.$refs['disableForm'].clearValidate();
    })
},

上面的代码中,如果直接写this.$refs['disableForm'].clearValidate();,会报错提示undefined,一般遇到refs获取的dom提示undefined时,最直接最简单的解决办法就是this.$nextTick,页面渲染完成后,再获取dom

去掉某个属性的表单校验:this.$refs['disableForm'].clearValidate('属性名')

this.$refs['disableForm'].clearValidate('属性名') 可以去掉对应属性的表单校验报错信息提示。

在这里插入图片描述

最终完成效果!!!!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐