快速解决Vue、element-ui的resetFields()方法重置表单无效的问题


Posted in Javascript onAugust 12, 2020

问题:

使用this.$ref['form'] .resetFields()无法重置表单项

原因:

1.没有给表单添加ref属性

<el-form ref="form"></el-form>

2.表单项el-form-item没有添加prop属性,prop属性需要与input框绑定的属性一致

<el-form ref="form" :model="sizeForm" label-width="80px" size="mini">
 <el-form-item label="活动名称" prop="name">
  <el-input v-model="sizeForm.name"></el-input>
 </el-form-item>
</el-form>

3.还有一个经常出现这种问题的场景是,当使用vuex的时候,新建表单与编辑表单复用,此时上述属性跟方法都添加了也无法达到清除表单的效果。

此时我们再重新看一下element-ui的官方文档

方法名 说明
resetField 对该表单项进行重置,将其值重置为初始值并移除校验结果
clearValidate 移除该表单项的校验结果

重点:resetField()方法不是将表单重置为空,而是重置为初始值

所以当我们打开新建表单的时候,表单项绑定的属性值为空,在提交表单后,表单项绑定的值不为空,此时再打开新建表单是会有上一次的值出现,此时resetField()方法是无法清空表单的,因为在这次操作的时候,属性初始值就不为空。

解决方法:

在提交表单成功后对绑定的值进行方法重置

//  重置表单项属性
resetForm () {
  return {
    remark: '',
    name: ''
  }
}
 
//  提交表单成功后重新给属性赋值
submit () {
  //......调用成功
  let self = this
  let query = self.resetForm()
  self.updateForm({ //此方法是自定义的vuex的action方法,大家可根据实际应用场景定义重置表单方法
    form: query
  )}
  self.$ref['form'].resetFields()  // 此时再调用resetFields()方法是为了清除表单验证而出现的错误
}

在对属性进行重置后执行resetFields方法,是因为对属性重置为空时,可能会触发表单规则的验证,此时执行resetFields会移除校验结果

补充知识:vue+element-ui this.$refs[‘‘].resetFields() 重置表单数据不生效问题

element 的 Form 组件提供了表单验证的功能,需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名。

有两点需要注意:

1.要有对应的 ref,且名字一致,表明重置哪个表单。

2.prop 设置的字段名要和 v-model 绑定的字段名一致,否则重置表单或进行自定义校验规则时不会生效。

仅使用重置功能时具体校验规则不必填,但要重置的字段一定要有对应的 prop。

以上这篇快速解决Vue、element-ui的resetFields()方法重置表单无效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 控制弹出窗口
Apr 10 Javascript
JS获取当前日期和时间的简单实例
Nov 19 Javascript
做好七件事帮你提升jQuery的性能
Feb 06 Javascript
javascript每日必学之基础入门
Feb 16 Javascript
基于js实现二级下拉联动
Dec 17 Javascript
微信小程序 switch组件详解及简单实例
Jan 10 Javascript
js从输入框读取内容,比较两个数字的大小方法
Mar 13 Javascript
Vue实例中生命周期created和mounted的区别详解
Aug 25 Javascript
在vue项目中使用sass的配置方法
Mar 20 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
Aug 07 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
Feb 20 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
Oct 24 Javascript
vue-router 2.0 跳转之router.push()用法说明
Aug 12 #Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
Aug 12 #Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
Aug 13 #Javascript
VsCode里的Vue模板的实现
Aug 12 #Javascript
typescript配置alias的详细步骤
Aug 12 #Javascript
js实现表格单列按字母排序
Aug 12 #Javascript
javascript的hashCode函数实现代码小结
Aug 11 #Javascript
You might like
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
javascript的键盘控制事件说明
2008/04/15 Javascript
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
js弹出div并显示遮罩层
2014/02/12 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
python socket网络编程之粘包问题详解
2018/04/28 Python
对Python 数组的切片操作详解
2018/07/02 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
python调用staf自动化框架的方法
2018/12/26 Python
python 抓取知乎指定回答下视频的方法
2020/07/09 Python
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
Born鞋子官网:Born Shoes
2017/04/06 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
求职简历中个人的自我评价
2013/12/01 职场文书
投标邀请书范文
2014/01/31 职场文书
财务个人年度总结范文
2015/02/26 职场文书
病假证明模板
2015/06/19 职场文书
解析Redis Cluster原理
2021/06/21 Redis
python异步的ASGI与Fast Api实现
2021/07/16 Python
正则表达式基础与常用验证表达式
2022/06/16 Javascript