快速解决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 相关文章推荐
如何实现浏览器上的右键菜单
Jul 10 Javascript
javascript实现的网页局布刷新效果
Dec 01 Javascript
js 图片缩放(按比例)控制代码
May 27 Javascript
jQuery学习笔记之jQuery动画效果
Sep 09 Javascript
使用js判断TextBox控件值改变然后出发事件
Mar 07 Javascript
JavaScript中Function函数与Object对象的关系
Dec 17 Javascript
原生JS实现简单放大镜效果
Feb 08 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
在vue中根据光标的显示与消失实现下拉列表
Sep 29 Javascript
Vue的自定义组件不能使用click方法的解决
Jul 28 Javascript
jquery实现广告上下滚动效果
Mar 04 jQuery
Vue3.0 手写放大镜效果
Jul 25 Vue.js
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
德生PL550的电路分析
2021/03/02 无线电
SONY ICF-F10中波修复记
2021/03/02 无线电
php Smarty 字符比较代码
2011/02/27 PHP
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
在Vue中使用antv的示例代码
2020/06/29 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
python 利用文件锁单例执行脚本的方法
2019/02/19 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
Python运行DLL文件的方法
2020/01/17 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
C#笔试题和英文面试题
2013/02/07 面试题
高级人员简历的自我评价分享
2013/11/03 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
广告设计应届生求职信
2014/03/01 职场文书
投资合作协议书
2014/04/17 职场文书
初中同学会活动方案
2014/08/22 职场文书
生活小常识广播稿
2015/08/19 职场文书
详解MySQL集群搭建
2021/05/26 MySQL
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏