快速解决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 5 新增 Array 方法实现介绍
Feb 06 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
Nov 04 Javascript
JS函数重载的解决方案
May 13 Javascript
JavaScript数组随机排列实现随机洗牌功能
Mar 19 Javascript
jQuery实现可展开合拢的手风琴面板菜单
Sep 15 Javascript
JS简单模拟触发按钮点击功能的方法
Nov 30 Javascript
关于JavaScript限制字数的输入框的那些事
Aug 14 Javascript
javascript内存分配原理实例分析
Apr 10 Javascript
js断点调试心得分享(必看篇)
Dec 08 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
Jul 11 Javascript
使用ThinkJs搭建微信中控服务的实现方法
Aug 08 Javascript
微信小程序通过一个json实现分享朋友圈图片
Sep 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
codeigniter中测试通过的分页类示例
2014/04/17 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
JS随机排序数组实现方法分析
2017/10/11 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
js阻止默认右键的下拉菜单方法
2018/01/02 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
python逆向入门教程
2018/01/15 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
利用python 下载bilibili视频
2020/11/13 Python
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
新加坡交友网站:be2新加坡
2019/04/10 全球购物
大专毕业自我鉴定
2014/02/04 职场文书
学校校庆演讲稿
2014/05/22 职场文书
老龄工作先进事迹
2014/08/15 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
起诉书格式范文
2015/05/20 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python