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 继承详解(二)
Jul 13 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
Jan 22 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
Jan 21 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
Apr 03 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
Jun 21 Javascript
浅析Ajax语法
Dec 05 Javascript
微信小程序访问node.js接口服务器搭建教程
Apr 25 Javascript
深入理解JavaScript 中的执行上下文和执行栈
Oct 23 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
Mar 28 Javascript
详解a标签添加onclick事件的几种方式
Mar 29 Javascript
基于iview-admin实现动态路由的示例代码
Oct 02 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
May 13 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
请离开include_once和require_once
2013/07/18 PHP
php简单实现数组分页的方法
2016/04/30 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
nodejs开发微信小程序实现密码加密
2017/07/11 NodeJs
JavaScript引用类型Function实例详解
2018/08/09 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
Python3爬虫学习入门教程
2018/12/11 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
python实现多线程端口扫描
2019/08/31 Python
Python读取csv文件实例解析
2019/12/30 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
赡养老人协议书
2014/04/21 职场文书
公司承诺书范文
2014/05/19 职场文书
体育口号大全
2014/06/18 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
三年级学生期末评语
2014/12/26 职场文书
小学校长个人总结
2015/03/03 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
创业计划书之餐饮
2019/09/02 职场文书
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python
Golang map映射的用法
2022/04/22 Golang
java开发双人五子棋游戏
2022/05/06 Java/Android