快速解决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 相关文章推荐
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
Apr 06 Javascript
JSON+JavaScript处理JSON的简单例子
Mar 20 Javascript
对new functionName()定义一个函数的理解
May 22 Javascript
jquery选择器需要注意的问题
Nov 26 Javascript
node.js中的http.response.writeHead方法使用说明
Dec 14 Javascript
JQuery插件jcarousellite的参数中文说明
May 11 Javascript
基于javascript制作经典传统的拼图游戏
Mar 22 Javascript
jQuery实现的倒计时效果实例小结
Apr 16 Javascript
基于JS模仿windows文件按名称排序效果
Jun 29 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
Sep 12 Javascript
vue文件树组件使用详解
Mar 29 Javascript
Vue组件创建和传值的方法
Aug 17 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
图书管理程序(二)
2006/10/09 PHP
PHP可变函数的使用详解
2013/06/14 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
JQuery 常用操作代码
2010/03/14 Javascript
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
vue中echarts3.0自适应的方法
2018/02/26 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
python发布模块的步骤分享
2014/02/21 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
Python 日期与时间转换的方法
2020/08/01 Python
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
香港交友网站:be2香港
2018/07/22 全球购物
工程地质勘察专业大学生求职信
2013/10/13 职场文书
检讨书格式
2015/05/07 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书