快速解决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 相关文章推荐
TextArea不支持maxlength的解决办法(jquery)
Sep 13 Javascript
js点击更换背景颜色或图片的实例代码
Jun 25 Javascript
Js实现滚动变色的文字效果
Jun 16 Javascript
深入浅析AngularJS中的module(模块)
Jan 04 Javascript
Bootstrap的modal拖动效果
Dec 25 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
Sep 18 Javascript
Vue2.0子同级组件之间数据交互方法
Feb 28 Javascript
React SSR样式及SEO的实践
Oct 22 Javascript
微信小程序动态设置图片大小的方法
Nov 21 Javascript
js实现图片上传到服务器和回显
Jan 19 Javascript
vue父子模板传值问题解决方法案例分析
Feb 26 Javascript
JS面向对象编程实现的拖拽功能案例详解
Mar 03 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
PHP中几个常用的魔术常量
2012/02/23 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
页面版文本框智能提示JS代码
2009/11/20 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
Python设置默认编码为utf8的方法
2016/07/01 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
python3制作捧腹网段子页爬虫
2017/02/12 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
python实现剪切功能
2019/01/23 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
python3 字符串知识点学习笔记
2020/02/08 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
香港化妆品经销商:我的公主
2016/08/05 全球购物
Trina Turk官网:美国时装和泳装品牌
2018/06/10 全球购物
《明天,我们毕业》教学反思
2014/04/24 职场文书
领导欢迎词范文
2015/01/26 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
TV动画《间谍过家家》公开PV
2022/03/20 日漫
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL