弹出窗关闭的时候提示是否关闭,同时进行一些对应的方法调用,
然而在进行页面关闭调用的时候,往往页面关闭了,才弹出确认对话框,
$.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不是太多,更多的时候是帮别人解决问题的时候遇到测试的,
以上观点只为个人观点,非最优解决方案,欢迎大神给出更优解决方案,多多交流才有进步;
有新问题请留言,大家一起探讨一起进步;

最新文章

  1. C++ 应用程序性能优化
  2. java 操作Excel表 创建 查看 修改
  3. bzoj3876: [Ahoi2014]支线剧情
  4. linux下使用Apache+php实现留言板功能的网站
  5. HDU 4944 FSF’s game 一道好题
  6. NPOI格式设置
  7. Java通过Executors提供四种线程池
  8. 编译及load mydqli.so文件
  9. ES6学习小计
  10. 交易策略研究 R库
  11. Hive2.0函数大全(中文版)
  12. PHP MySql数据库访问
  13. iOS 开源库
  14. 【mongodb系统学习之十】mongodb查询(一)
  15. python 批量删除mysql前缀相同的表
  16. php-fpm重启操作
  17. Effective C++目录
  18. [转] Node.js使用MongoDB3.4+Access control is not enabled for the database解决方案
  19. 《JavaScript Dom 编程艺术》读书笔记-第7章
  20. linux服务器系统负载监控-shell脚本

热门文章

  1. arm参数传递和返回值
  2. (转)在Java中如何遍历Map对象
  3. 解决Only the original thread that created a view hierarchy can touch its views
  4. android开发中应该注意的问题
  5. new/delete 和 new[]/delete[]
  6. webView缩放
  7. 在线演示红黑树(javascript)
  8. 多线程编程--- __thread关键字
  9. [python]小练习__创建你自己的命令行 地址簿 程序
  10. CentOS 6.4 利用 Awstats 7.2 分析 Nginx 日志