jQuery前端框架easyui使用Dialog时bug处理


Posted in Javascript onDecember 05, 2014

最近一直都在用easyui前端框架来开发设计UI,但在使用Dialog时,发现如果页面内容比较多,就会出现问题,首先看一下我的原代码:

 <input type="button" value="确认预约" id="btnconfirm" onclick="javascript:openconfirmDlg();" />

    <div id="confirmd">  

        <p>请选择确认结果:</p>

        <p><input type="radio" value="True" id="rtrue" name="rresult" class="rresult" /><label for="rtrue">成功</label>

             

        <input type="radio" value="False" id="rfalse" name="rresult" class="rresult" /><label for="rfalse">失败</label></p>

    </div>

     <script type="text/javascript">

         $("#confirmd").dialog({

             title: '预约确认',

             iconCls: 'icon-save', resizable: false, modal: true, closed: true,

             width: 200, height: 200,

             buttons: [{ text: '提 交', handler: function () {

                 alert("ok");

             }

             }, { text: '取 消', handler: function () {

                 $("#confirmd").dialog("close");

             }

             }]

         });

     function openconfirmDlg() {

         $("#confirmd").dialog("open");

     }

     </script>

当点击【确认预约】按钮时,打开对话框,效果如下:

jQuery前端框架easyui使用Dialog时bug处理

可以看到几个问题,一是遮罩层没有全部盖住网页内容,二是对话框不见了,当然不是真的不见了,而是显示到了页面的上方,需要将滚动条拖回到项端方可见到,造成这样的原因很清楚,一是获取网页内容高度不正确,只是得到了window的高度(即可视高度),才会出现遮罩不完整,二是定位不正确,未能正确识别到scrollTop,造成对话框定位不准,针对这些问题,我做出了相应的改进,从而解决了该问题,下面是改进后的代码:

    <input type="button" value="确认预约" id="btnconfirm" onclick="javascript:openconfirmDlg();" />

    <div id="confirmd">  

        <p>请选择确认结果:</p>

        <p><input type="radio" value="True" id="rtrue" name="rresult" class="rresult" /><label for="rtrue">成功</label>

             

        <input type="radio" value="False" id="rfalse" name="rresult" class="rresult" /><label for="rfalse">失败</label></p>

    </div>

     <script type="text/javascript">

         $("#confirmd").dialog({

             title: '预约确认',

             iconCls: 'icon-save', resizable: false, modal: true, closed: true,

             width: 200, height: 200,

             buttons: [{ text: '提 交', handler: function () {

                 alert("ok");

             }

             }, { text: '取 消', handler: function () {

                 $("#confirmd").dialog("close");

             }

             }]

         });

     window.onscroll = function () {

         $("#confirmd").dialog("move", { top: $(document).scrollTop() + ($(window).height() - 200) * 0.5 }); 

     }

     function openconfirmDlg() {

         $("#confirmd").dialog("open");

         $("#confirmd").dialog("move", { top: $(document).scrollTop() + ($(window).height() - 200) * 0.5 });

         $(".window-mask").css({ height: $(document).height()});

     }

     </script>

现在打开对话框就正常了,效果如下:

jQuery前端框架easyui使用Dialog时bug处理

即使滚动也能始终处在网页中间,效果如下:

jQuery前端框架easyui使用Dialog时bug处理

确保如上效果的关键代码是:

         $("#confirmd").dialog("move", { top: $(document).scrollTop() + ($(window).height() - 200) * 0.5 }); //移动到当前内容页面的中间

         $(".window-mask").css({ height: $(document).height()}); //调整遮罩层的高度为网页内容高度

大家测试下,是不是比之前的好用多了,本人测试了大多数浏览器都没有问题,如果有遗漏的,还请留言告之,本代码持续更新。

Javascript 相关文章推荐
DOM 基本方法
Jul 18 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
Dec 04 Javascript
event.X和event.clientX的区别分析
Oct 06 Javascript
javascript椭圆旋转相册实现代码
Jan 16 Javascript
jQuery Ajax异步处理Json数据详解
Nov 05 Javascript
全面兼容的javascript时间格式化函数(比较实用)
May 14 Javascript
jquery利用命名空间移除绑定事件的方法
Mar 11 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
Mar 18 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
Apr 12 Javascript
JavaScript 字符串常用操作小结(非常实用)
Nov 30 Javascript
用最少的JS代码写出贪吃蛇游戏
Jan 12 Javascript
基于Vue-cli快速搭建项目的完整步骤
Nov 03 Javascript
Javascript实现获取窗口的大小和位置代码分享
Dec 04 #Javascript
Javascript 中创建自定义对象的方法汇总
Dec 04 #Javascript
dreamweaver 8实现Jquery自动提示
Dec 04 #Javascript
jquery实现动态画圆
Dec 04 #Javascript
javascript数组遍历for与for in区别详解
Dec 04 #Javascript
c#+jquery实现获取radio和checkbox的值
Sep 12 #Javascript
express的中间件cookieParser详解
Dec 04 #Javascript
You might like
php flush类输出缓冲剖析
2008/10/19 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
python snownlp情感分析简易demo(分享)
2017/06/04 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
pytorch梯度剪裁方式
2020/02/04 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
python实现扫雷游戏
2020/03/03 Python
Python 面向对象部分知识点小结
2020/03/09 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
《童年的发现》教学反思
2014/02/14 职场文书
2014年三八妇女节活动总结
2014/03/01 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
入伍通知书
2015/04/23 职场文书
客户答谢会致辞
2015/07/30 职场文书
2016年度员工工作表现评语
2015/12/02 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
Python各协议下socket黏包问题原理
2022/04/12 Python