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 相关文章推荐
JavaScript进阶教程(第四课第一部分)
Apr 05 Javascript
jquery $.ajax各个事件执行顺序
Oct 15 Javascript
JavaScript 学习历程和心得分享
Dec 12 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
Jan 12 Javascript
基于ajax实现文件上传并显示进度条
Aug 03 Javascript
js实现点击图片自动提交action的简单方法
Oct 16 Javascript
JS实现购物车特效
Feb 02 Javascript
AngularJS select设置默认值的实现方法
Aug 25 Javascript
vue组件生命周期详解
Nov 07 Javascript
javascript获取元素的计算样式
May 24 Javascript
小程序实现长按保存图片的方法
Dec 31 Javascript
js实现抽奖功能
Nov 24 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 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
php两种无限分类方法实例
2015/04/21 PHP
php生成word并下载代码实例
2019/03/15 PHP
javascript中的缓动效果实现程序
2012/12/29 Javascript
javascript使用appendChild追加节点实例
2015/01/12 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
python 实现归并排序算法
2012/06/05 Python
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
解决python 执行shell命令无法获取返回值的问题
2020/12/05 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
员工拾金不昧表扬信
2014/01/09 职场文书
大学生职业生涯规划书范文
2014/01/14 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript