快速解决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 相关文章推荐
用JavaScript隐藏控件的方法
Sep 21 Javascript
JavaScript中的apply()方法和call()方法使用介绍
Jul 25 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
Aug 09 Javascript
input链接页面、打开新网页等等的具体实现
Dec 30 Javascript
JQuery包裹DOM节点的方法
Jun 11 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
Oct 01 Javascript
JavaScript严格模式详解
Nov 18 Javascript
Js调用Java方法并互相传参的简单实例
Aug 11 Javascript
微信小程序 标签传入数据
May 08 Javascript
微信小程序如何调用新闻接口实现列表循环
Jul 02 Javascript
layui--select使用以及下拉框实现键盘选择的例子
Sep 24 Javascript
Vue最新防抖方案(必看篇)
Oct 30 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+mysql写的留言本
2006/10/09 PHP
php在线打包程序源码
2008/07/27 PHP
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
php Smarty模板生成html文档的方法
2010/04/12 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
PHP5.3新特性小结
2016/02/14 PHP
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
python八大排序算法速度实例对比
2017/12/06 Python
Python3计算三角形的面积代码
2017/12/18 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
python 日志增量抓取实现方法
2018/04/28 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
银行实习鉴定
2013/12/13 职场文书
高校教师自荐信范文
2014/03/13 职场文书
学习演讲稿范文
2014/05/10 职场文书
文体活动总结
2015/02/04 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书