快速解决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 性能优化手册 推荐
Feb 23 Javascript
jquery实现更改表格行顺序示例
Apr 30 Javascript
javascript的document.referrer浏览器支持、失效情况总结
Jul 18 Javascript
JavaScript获取当前url根目录(路径)
Jun 17 Javascript
微信小程序实现点击返回顶层的方法
Jul 12 Javascript
JavaScript时间戳与时间日期间相互转换
Dec 11 Javascript
JavaScript实现单例模式实例分享
Dec 22 Javascript
详解基于vue-cli配置移动端自适应
Jan 13 Javascript
微信小程序scroll-view组件实现滚动动画
Jan 31 Javascript
基于js实现抽红包并分配代码实例
Sep 19 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
Sep 02 Javascript
微信小程序picker组件两列关联使用方式
Oct 27 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 $_ENV为空的原因分析
2009/06/01 PHP
php实现两个数组相加的方法
2015/02/17 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
js数组去重的hash方法
2016/12/22 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
详解webpack 多页面/入口支持&amp;公共组件单独打包
2017/06/29 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
vue-router之nuxt动态路由设置的两种方法小结
2018/09/26 Javascript
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
python list中append()与extend()用法分享
2013/03/24 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
什么是事务?为什么需要事务?
2012/01/09 面试题
经济管理专业毕业生推荐信
2013/11/11 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
社会学专业求职信
2014/02/24 职场文书
施工安全标语
2014/06/07 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/10/28 职场文书
万能检讨书
2015/01/27 职场文书
捐款通知怎么写
2015/04/24 职场文书
安全责任协议书范本
2016/03/23 职场文书