快速解决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 相关文章推荐
[原创]网络复制内容时常用的正则+editplus
Nov 30 Javascript
javascript 建设银行登陆键盘
Jun 10 Javascript
javascript 二维数组的实现与应用
Mar 16 Javascript
按给定几率进行随机抽取的js代码
Dec 28 Javascript
js改变文章字体大小的实例代码
Nov 27 Javascript
浅析JavaScript动画
Jun 10 Javascript
超赞的jQuery图片滑块动画特效代码汇总
Jan 25 Javascript
关于JS变量和作用域详解
Jul 28 Javascript
自制简易打赏功能的实例
Sep 02 Javascript
使用puppeteer爬取网站并抓出404无效链接
Dec 20 Javascript
解决layui表格内文本超出隐藏的问题
Sep 12 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 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做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
php微信支付接口开发程序
2016/08/02 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
jquery实现select下拉框美化特效代码分享
2015/08/18 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
2016/01/28 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
pycharm修改文件的默认打开方式的步骤
2019/07/29 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
分厂厂长岗位职责
2013/12/29 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
文秘应届生求职信
2014/07/05 职场文书
医生爱岗敬业演讲稿
2014/08/26 职场文书
员工升职自荐信
2015/03/27 职场文书
遗愿清单观后感
2015/06/09 职场文书
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js