EasyUI的progress对象close方法报错的彻底解决方案

今天发现EasyUI的一个BUG,进度条的关闭会影响其它窗体的操作。代码如下:

function saveCoupon() {
    $.messager.progress();
    $("#fm").form("submit", {
        url: "Coupon/PutOnCoupon",
        onSubmit:function(){
            var isValid = $(this).form('validate');
            if (!isValid) {
                $.messager.progress('close');
            }
            return isValid;
        },
        dataType: "text",
        success: function (result) {
            $.messager.progress('close');
            $("#dlg").dialog("close");
            $("#couponSupplyGrid").datagrid("reload");
        }
    })
}

当代码顺利保存优惠券数据后,执行success处的代码,按照本意,先关闭进度条,然后关闭对话框,最后重新加载数据表格,但是,当执行完毕$.messager.progress(‘close‘)后,后续代码无法正常执行,查看游览器调试窗口,显示如下错误信息:

Uncaught TypeError: Cannot read property 'onClose' of undefined

经过尝试,把 $.messager.progress(‘close‘); 代码放到最后执行,一切OK。

晚上回到家,对 $.messager.progress(‘close‘);  执行过程跟踪了一下,发现在在4844行的地方有个BUG,原代码如下:

onClose: function() {
	if (this.timer) {
		clearInterval(this.timer);
	}
	if (_2af.onClose) {
		_2af.onClose.call(this);
	} else {
		$.messager.defaults.onClose.call(this);
	}
}

正是 if (_2af.onClose) 这段条件语句中_2af为undefined时报错了,根据代码的结构,可以猜出作者本意是若_2af对象没有onClose事件,则调用默认的close事件处理函数。因此,可以将此条件语句改为如下:

onClose: function() {
	if (this.timer) {
		clearInterval(this.timer);
	}
    if (_2af && _2af.onClose) {
		_2af.onClose.call(this);
	} else {
		$.messager.defaults.onClose.call(this);
	}
}

经测试,执行 $.messager.progress(‘close‘); 时不再报错了,问题圆满解决。

本人使用的是easyui-1.4.3版本。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 01:45:51

EasyUI的progress对象close方法报错的彻底解决方案的相关文章

Spring Data JPA使用getOne方法报错:Method threw 'org.hibernate.LazyInitializationException' exception. Cannot evaluate

getOne是懒加载,需要增加这个配置: spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true,但这种方式不太友好,建议不要使用. 解释:https://vladmihalcea.com/2016... 每次初始化一个实体的关联就会创建一个临时的session来加载,每个临时的session都会获取一个临时的数据库连接,开启一个新的事物.这就导致对底层连接池压力很大,而且事物日志也会被每次flush.设想一下:假如我们查询了

python struct.pack方法报错argument for 's' must be a bytes object 解决

参考 https://blog.csdn.net/weixin_38383877/article/details/81100192 在python3下使用struct模块代码 fileHead = struct.pack('128sl', os.path.basename(filePath),os.stat(filePath).st_size); 抛出异常: argument for 's' must be a bytes object必须要是字节类型. 解决办法: 把字符串的地方转为字节类型,

SpringBoot关于SpringDataJpa中findOne()方法报错问题

问题描述: 首先用的SpringDataJPA的1.11版本,可以使用findOne()方法根据id查询 然后我使用了2.0.5版本,发现findOne()方法报错了,不能用来当作根据id查询了. 当使用findById(ID)进行查询的时候,页面使用Thymeleaf接收Controller出过来的数据的时候,页面接收失败. 解决办法: 使用findById(id).get()来进行查询.   原文地址:https://www.cnblogs.com/JohnEricCheng/p/87937

Flex动态获取方法报错

1.错误描述 2.错误原因 由于Flex文件修改后,需要将其编译成swf文件,刚修改的方法没有编译,再加上历史缓存的原因,导致报错 3.解决办法 将Flex项目重新clean一下,并将MyEclipse刷新一下,浏览器的缓存清除一下

C# 项目迁移 Microsoft.VisualStudio.Tools.Office.BuildTasks 生成解决方法报错:请确认 <UsingTask> 声明正确,该程序集及其所有依赖项都可用

1.在Server2003上使用vs2010开发的项目,移到Win8上,同样使用vs2010打开.在生成解决方案的时候有如下报错: 未能从程序集 Microsoft.VisualStudio.Tools.Office.BuildTasks, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 加载任务“FindRibbons”. 请确认 <UsingTask> 声明正确,该程序集及其所有依赖项都可用,并且该任务包

setSupportActionBar()方法报错

在Android开发中,使用ToolBar控件替代ActionBar控件,需要在java代码中使用setSupportActionBar()方法,如下: 1 Toolbar toolbar = (Toolbar) this.findViewById(R.id.toolBar); 2 this.setSupportActionBar(toolbar); 通常的报错有两种: 1.方法参数报错 这种报错是因为导错了类,把以下代码 1 import android.widget.Toolbar; 更换成

jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法

jQuery(function ($) { // 备份jquery的ajax方法 var _ajax = $.ajax; // 重写ajax方法,先判断登录在执行success函数 $.ajax = function (opt) { var _success = opt && opt.success || function (a, b) { }; var _opt = $.extend(opt, { success: function (data, textStatus) { // 如果后

捉虫经历:weblogic 下调用 getServletContext() 方法报错

原来在 tomcat 下部署的应用没什么问题,今天部署到 weblogic 下,程序跑不起来了,报错信息如下: the method getServletContext() is undefined ps:我在jsp页面中调用了this.getServletContext() 方法,在 tomcat 下没问题,但部署在 weblogic 下就报错了. 在 google 搜索框中直接输入:weblogic the method getServletContext() is undefined 然后

DefaultHttpClient execute() 方法报错

今天写代码,这里报错 public static String doGet(String url, boolean useCache, String encoding) throws Exception { if (TextUtils.isEmpty(url)) { throw new NullPointerException("网络请求地址不能为空"); } String data = null; if (useCache) { data = doGetCache(url); if