在使用Element的表单时,我们经常使用el-dialog弹窗来填写表单内容,并在添加和编辑时打开弹窗。 有时候我们填完数据后没有保存或者删除表单的内容elementui移除校验,然后就触发了表单的校准,然后就关闭了弹窗。 然后我们重新打开弹窗,发现之前的表格校准并没有去掉。 这时就需要通过关闭弹窗的方式来处理。
handleClose:function(){
var _this = this;
_this.resetFormData();//重置表单,就是将表单的每一项置空
_this.dialogVisible=false;//关闭弹窗
setTimeout(function () {
_this.$refs['formMsg'].clearValidate();//消除校验,这里的setTimeOut不能去掉,去掉之后会不生效
},30);
},
常见问题:
我只想清除某个表单项的校准
在clearValidate()中以链表的形式填写form数组的prop属性值elementui移除校验,
if (sn != null && sn != "") {
setTimeout(function () {
app.$refs['formMsg'].clearValidate(['sn']);
},30);
}
为什么清除校准不生效
需要用setTimeout包装重置表单为什么不resetFields()
resetFields() 方法只是将表单的项目恢复为其初始值。 如果我们在页面加载成功后点击“编辑”回显数据,那么表单就已经被正式参数化了。 这时表单的初始值就有值了,而且不为空,所以关闭弹窗后,我们再次点击添加,发现表单的输入框还是有值的。 那么这就有问题了。