快速解决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 相关文章推荐
JSQL  一个 web DB 的封装
May 05 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
Dec 07 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
Jun 22 Javascript
JavaScript闭包函数访问外部变量的方法
Aug 27 Javascript
js调试工具Console命令详解
Oct 21 Javascript
JavaScript中join()方法的使用简介
Jun 09 Javascript
JS版元素周期表实现方法
Aug 05 Javascript
Jquery on绑定的事件 触发多次实例代码
Dec 08 Javascript
详解微信小程序 页面跳转 传递参数
Dec 08 Javascript
jQuery实现 RadioButton做必选校验功能
Jun 15 jQuery
微信小程序实现打开并下载服务器上面的pdf文件到手机
Sep 20 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
Nov 02 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
打造计数器DIY三步曲(中)
2006/10/09 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
PHP面向对象详解(三)
2015/12/07 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
javascript 打印页面代码
2009/03/24 Javascript
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
python检测lvs real server状态
2014/01/22 Python
python中List的sort方法指南
2014/09/01 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
django框架forms组件用法实例详解
2019/12/10 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
python3.5的包存放的具体路径
2020/08/16 Python
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
中专毕业生自我鉴定
2014/02/02 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
大学学风建设方案
2014/05/04 职场文书
安全责任书怎么写
2014/07/28 职场文书
商铺租房协议书范本
2014/12/04 职场文书
委托书的样本
2015/01/28 职场文书
员工离职证明范本
2015/06/12 职场文书
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android