弹出窗关闭的时候提示是否关闭,同时进行一些对应的方法调用,
然而在进行页面关闭调用的时候,往往页面关闭了,才弹出确认对话框,
$.messager.confirm和panel的onBeforeClose不兼容性问题.
一.初始代码:
    $('#_MoneyExpense_show_dialog').panel({
       onBeforeClose:function(title){
           $.messager.confirm('提示','确定关闭',function(r){  
               if(r){
                  return true;
               }else{
                  return false;
               }
           })
    }})
二.起因分析:
$.messager.confirm为异步方法.在easyui说明中题头已经提到,

Messager(消息窗口)

使用$.messager.defaults重写默认值对象。

 
消息窗口提供了不同的消息框风格,包含alert(警告框), confirm(确认框), prompt(提示框), progress(进度框)等。所有的消息框都是异步的。用户可以在交互消息之后使用回调函数去处理结果或做一些自己需要处理的事情。
在$.messager.confirm还没有进行返回,即你还没有点击按钮的时候onBeforClose已经接收到了""做为返回值.而且该值被认为true.然后关闭了页面,导致了先关闭页面,再弹窗提醒是否关闭的情况.
三.解决方式:
引入全局变量,对状态进行控制.曲线救国,变异步为两次调用的伪同步方法.
设置全局变量默认为false;当页面要求关闭时,判断全局变量
     全局变量为true,设置全局变量为false,关闭页面.
     全局变量为false,不关闭页面,打开弹窗
          选择确定,设置全局变量为true,再次调用关闭页面的方法.
          选择取消.什么都不做.
这样解决,有点浪费效率和资源.没有从根源上解决问题.有更好的方式再进行优化吧!
 
四.解决代码如下:
    var msg = false;//设置全局变量;
    $('#_MoneyExpense_show_dialog').panel({
       onBeforeClose:function(){
           if(msg){//判定全局变量为真;
               msg=false;//设置全局变量为false;
               return true;//关闭页面;
           }else{
               $.messager.confirm('提示','确定关闭',function(r){  
                  if(r){//弹窗提示选择为确定;
                      msg = true;//设置全局变量为真,及关闭页面;
                      $('#_MoneyExpense_show_dialog').panel('close');
                      //再次调用关闭页面方法.全局变量为true,则进入弹出窗方法.
                  }
               });
               return false;//关闭页面时,全局变量为false,则不进行关闭页面.
           }
       },
    });
五.备注:
因使用easyui不是太多,更多的时候是帮别人解决问题的时候遇到测试的,
以上观点只为个人观点,非最优解决方案,欢迎大神给出更优解决方案,多多交流才有进步;
有新问题请留言,大家一起探讨一起进步;

easyui弹出窗关闭前调用确认窗口,先关闭页面后调用弹出窗口的更多相关文章

  1. javascript使浏览器关闭前弹出确认

    当用户关闭页面时,弹出对话框,让用户确认是否关闭,选择确定则页面关闭,否则页面不关闭. 效果体验:http://keleyi.com/keleyi/phtml/js/index.htm 完整代码: & ...

  2. ligerUI调用$.ligerDialog.open弹出窗口,关闭后无法获取焦点问题

    1:调用父窗口某一个文件框,获取焦点,   parent.window.document.getElementByIdx_x("roleName").focus(); 2:关闭父窗 ...

  3. javascript关闭弹出窗体时刷新父窗体和居中显示弹出窗

    居中显示用到了moveTO()方法: 关闭弹出窗时刷新父窗体用到了window.opener方法: 父窗体代码例如以下: <%@ Page Language="C#" Aut ...

  4. bootstrap-data-target触发模态弹出窗元素的data使用 data-toggle与data-target的作用 深入ASP.NET MVC之九:Ajax支持 Asp.Net MVC4系列--进阶篇之AJAX

    bootstrap-data-target触发模态弹出窗元素的data使用 时间:2017-05-27 14:22:34      阅读:4479      评论:0      收藏:0      [ ...

  5. Bootstrap模态弹出窗

    Bootstrap模态弹出窗有三种方式: 1.href触发模态弹出窗元素: <a class="btn btn-primary" data-toggle="moda ...

  6. data-参数说明(模态弹出窗的使用)

    除了通过data-toggle和data-target来控制模态弹出窗之外,Bootstrap框架针对模态弹出框还提供了其他自定义data-属性,来控制模态弹出窗.比如说:是否有灰色背景modal-b ...

  7. Jquery和Javascript 实际项目中写法基础-弹出窗和弹出层 (4)

     一.实际项目中有很多如下界面效果.    二.该效果可以归结为弹出窗或者弹出层来实现的,为什么这么说?看如下代码:      <!DOCTYPE html> <html> & ...

  8. Android应用之——百度地图最新SDK3.0应用,实现最经常使用的标注覆盖物以及弹出窗覆盖物

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/yanglfree/article/details/33333413 一.概述 最新版的百度地图SDK ...

  9. jquery Mobile弹出窗

    先创建一个窗体 <div data-role="popup" id="popupView" class="ui-content" da ...

随机推荐

  1. 文件夹添加 IIS 应用程序池用户权限

    http://serverfault.com/questions/81165/how-to-assign-permissions-to-applicationpoolidentity-account ...

  2. FTP 1.0

    自己写的可以实现文件的下载(必须自己知道文件名),还有很多要优化. 譬如:不能看可以下载的文件,输入错误无法处理,不能处理多个用户,每次只能下载一个结束,服务器没有完成守护进程:没有用函数封装,简化m ...

  3. FZU Problem 2150 Fire Game(bfs)

    这个题真要好好说一下了,比赛的时候怎么过都过不了,压点总是出错(vis应该初始化为inf,但是我初始化成了-1....),wa了n次,后来想到完全可以避免这个问题,只要入队列的时候判断一下就行了. 由 ...

  4. Python3基础 函数名.__doc__显示一个函数的单行与多行函数文档

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  5. windows MySQL 5.7 导出表方法记录

    首先修改MySQL配置 找到mysql安装目录下的 my.ini 文件,将 secure-file-priv = "C:/ProgramData/MySQL/MySQL Server 5.7 ...

  6. HDU 4408 Minimum Spanning Tree 最小生成树计数

    Minimum Spanning Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  7. 转载:org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.Annotation

    转载:org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.Annotation (2012 ...

  8. AVR编程_如何通过软件复位AVR?(转)

    源:http://blog.sina.com.cn/s/blog_493520900100bpos.html Question 如何通过软件复位AVR? Answer 如果你想通过软件复位AVR,你应 ...

  9. Cocos2dx 学习笔记整理----在项目中使用图片(三)

    这节练习下DragonBones. 手机由于性能所限,需要特注意资源的使用. 游戏项目的话由于资源比较多,一般都会用到DragonBones来做动作,这个又称为龙骨. DragonBones传送点:h ...

  10. Xcode模拟网络状态

    http://www.it165.net/pro/html/201508/50571.html