element的表单重置表单并用clearValidate消除校验

在用Element的表单时,我们经常采用的el-dialog弹窗来填写表单内容,在新增和编辑时打开弹窗。有时我们在填写完数据没有保存有删掉了表单的内容,这时触发了表单的校验,然后我们关闭了弹窗。然后我们重新新增打开弹窗,发现之前的表单校验还没有消除,这时就需要在关闭弹窗的方法中进行处理。

handleClose:function(){
    var _this = this;
    _this.resetFormData();//重置表单,就是将表单的每一项置空
    _this.dialogVisible=false;//关闭弹窗
    setTimeout(function () {
        _this.$refs['formMsg'].clearValidate();//消除校验,这里的setTimeOut不能去掉,去掉之后会不生效
    },30);
},

常见问题:

我只想消除某个 表单项的校验
clearValidate()里以数组形式 填写表单字段的 prop属性值,

if (sn != null && sn != "") {
    setTimeout(function () {
        app.$refs['formMsg'].clearValidate(['sn']);
    },30);
}

为什么消除校验不生效
需要用setTimeout包裹
重置表单为什么不用resetFields()
resetFields()方法只是将表单的各项还原为初始值。如果我们在页面加载成功之后,先点击编辑回显数据,这时表单已被赋值。那么这时表单的初始值就是有值的并不是空,所以在关闭弹窗之后,我们再点新增,发现表单的输入框依然还存在值。那么这样就是有问题的。

原文地址:https://www.cnblogs.com/mmzuo-798/p/15218182.html