公司项目重构,经过商定使用element ui。在重构项目的时候发现一下element ui上很蛋疼的东西。

例如,这个form表单就是一个。趁着在高铁上没事,把想写的东西写一下。

先说一下element ui提交form表单的时候,如果没有进入我们预想的代码流程,一般就是你写的自定义验证规则有误。

例如如下代码。验证镜像的名称是否重复的一个方法。每个if-else都需要有内容。如若满足就要有一个callback()。

反正我是被这个地方给坑了,之前写代码,一般就是if满足条件之后怎么怎么样,这次必须return 一下内容

let that = this;
var checkName = function (rule, value, callback) {
let re = /^[A-Za-z0-9_\.\-\u4e00-\u9faf]+$/;
if (!value) {
callback(new Error('该字段为必填项'));
} else {
if (re.test(value)) {
let url = that.prefix + '/yr_images/create_image/';
let data = {
is_check_name: 1,
name: value
};
that.Axios({
method: 'post',
url: url,
data: data,
transformRequest:function (data) {
let ret = '';
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret.slice(0, ret.length - 1);
}
})
.then(function (res) {
if (res.data.error_code != -200) {
return callback(new Error('名称重复'))
} else {
return callback()
}
})
.catch(function (err) {
console.log(err);
})
} else {
callback(new Error('输入不符合规则'))
}
}
};

言归正传,我们公司验证表单大部分是弹框内验证的。

当我打开弹框,form验证规则不满足,然后我关闭弹框,按理说应该取消红色提示,可是没有。

想到form有一个重置按钮,然后想到完全可以使用该方法。

可是打开之后之后,在控制台会报错,说该方法不存在!

上网查原因,一大堆都有,最后查到是element ui 打开弹框的方法是自带延迟的。

于是,我就用了下面的方法。

setTimeout(function () {
that.$refs['dialogContent'].resetFields();
},300)

还是有问题,如果网络慢怎么办,可能还是报错。

于是想到了js的try catch方法,我在外部给他包裹已一层try ,catch语句。问题解决!但是,测试最后提了个bug,那就是数据驱动的vue,页面内容没有改变。

内容被重复渲染。一直没有找到问题。最后才发现是setTimeout造成的!!!!!现在想想也傻,既然后try,catch了,为什么还要增加一个settimeout!!

try {
setTimeout(function () {
that.$refs['dialogContent'].resetFields();
},300)
} catch (e) { }

最终方法如下:

try {
that.$refs['dialogContent'].resetFields();
} catch (e) { }

问题解决

element ui form表单清空规则的更多相关文章

  1. element ui FORM表单

    form表单 Form-Item Slot [label] 旧版语法 <el-form-item label="活动名称" prop="name"> ...

  2. 封装Vue Element的form表单组件

    前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...

  3. vue+element ui 重置表单

    <el-dialog :title="addForm.title" :visible.sync="dialogFormVisible" width=&qu ...

  4. vue + element ui 阻止表单输入框回车刷新页面

    问题 在 vue+element ui 中只有一个输入框(el-input)的情况下,回车会提交表单. 解决方案 在 el-form 上加上 @submit.native.prevent 这个则会阻止 ...

  5. Easy UI form表单提交 IE浏览器不执行success ,以及 datagrid 展示过慢

    最近在做一个Easy ui的项目 发现了一些问题,在这里总结下 1.表单提交,后端代码 public ActionResult Save(Request model) { ResultInfo _in ...

  6. 20151124 Jquery UI form 表单变成dialog

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. form表单清空、重置

    form_live为formID <input type="button" value="重置" onclick="$('#form_live' ...

  8. vue elementui form表单验证

    最近我们公司将前端框架由easyui 改为 vue+elementui .自学vue两周 就开始了爬坑之路.业余时间给大家分享一下心得,技术新手加上第一次分享(小激动),有什么不足的地方欢迎大家指正, ...

  9. element-ui Form表单验证

    element-ui Form表单验证规则全解 element的form表单非常好用,自带了验证规则,用起来很方便,官网给的案例对于一些普通场景完全没问题,不过一些复杂场景的验证还得自己多看文档摸索, ...

随机推荐

  1. Bootstrap 历练实例 - 按钮(Button)插件复选框

    复选框(Checkbox) 您可以创建复选框按钮 组,并通过向 btn-group 添加 data 属性 data-toggle="buttons" 来添加复选框按钮组的切换. & ...

  2. V8引擎——详解

    前言 JavaScript绝对是最火的编程语言之一,一直具有很大的用户群,随着在服务端的使用(NodeJs),更是爆发了极强的生命力.编程语言分为编译型语言和解释型语言两类,编译型语言在执行之前要先进 ...

  3. CentOS7下Mysql5.7安装

    下载并安装MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.no ...

  4. 两个list缩进为一个list,python

    # w_list = ['a', 'b', 'c', 'd'] # e_list = ['c', 'd', 'b', 'a'] w_list = ['a', 'b', 'c', 'd', 'ff', ...

  5. 数据存储之使用mysql数据库存储数据

    推荐安装mysql5.7环境: 官网下载:https://dev.mysql.com/downloads/installer/5.7.html 如果提示没有.NET Framework框架.那么就在提 ...

  6. php扩展开发-快速上手

    系统环境CentOS release 6.5 (Final) PHP版本php-5.6.27 扩展开发需要有php环境及php的源代码,我的PHP安装目录/home/zhangxiaomin/stud ...

  7. JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)

    判断是否IE浏览器用的是window.navigator.userAgent,跟踪这个信息,发现在开发环境,识别为IE10,但访问服务器则识别为IE11,但IE11的userAgent里是没有MSIE ...

  8. kubernetes中使用ServiceAccount创建kubectl config 文件

    在kubernetes 为不同的项目创建了不同的SerivceAccount,那么如何通过ServiceAccount创建 kubectl config文件呢?使用下面脚本即可 # your serv ...

  9. 命令java 找不到或无法加载主类

    这个是由于用了package导致cmd下找不到class文件产生的错误,解决方案: 方法1.删除HelloWord.java源程序中的第一行package demo1:然后在cmd下正常使用javac ...

  10. 如何提高STM32的学习效率

    时间如何安排 做任何事情前,习惯写一个计划——要在一个月内上手STM32! 没有计划的日子,每天早上醒来睁开眼睛,却不知道自己今天要干啥 计划和时间安排: 第一阶段:找感觉——谈及STM32,立即反应 ...