快速解决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 相关文章推荐
htm调用JS代码
Mar 15 Javascript
浅谈javascript中的作用域
Apr 07 Javascript
使用jQuery实现星级评分代码分享
Dec 09 Javascript
原创jQuery弹出层插件分享
Apr 02 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
Sep 02 Javascript
js正则表达式注册页面表单验证
Oct 11 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
Dec 21 Javascript
基于JavaScript定位当前的地理位置
Apr 11 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
js排序与重组的实例讲解
Aug 28 Javascript
深入剖析JavaScript instanceof 运算符
Jun 14 Javascript
ElementUI Tag组件实现多标签生成的方法示例
Jul 08 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在文件指定行中写入代码的方法
2012/05/23 PHP
分享PHP header函数使用教程
2013/09/05 PHP
php实现分页工具类分享
2014/01/09 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
JavaScript 特殊字符
2007/04/05 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
jquery等待效果示例
2014/05/01 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
图解javascript作用域链
2019/05/27 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
python实现根据图标提取分类应用程序实例
2014/09/28 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
如何用python写个模板引擎
2021/01/14 Python
Python绘制数码晶体管日期
2021/02/19 Python
Larsson & Jennings官网:现代瑞士钟表匠
2018/03/20 全球购物
求职信写作要突出重点
2014/01/01 职场文书
审计班子对照检查材料
2014/08/27 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang