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 相关文章推荐
csdn 论坛技术区平均给分功能
Nov 07 Javascript
关于Mozilla浏览器不支持innerText的解决办法
Jan 01 Javascript
基于jquery的无缝循环新闻列表插件
Mar 07 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
Aug 07 Javascript
JQuery获取样式中的background-color颜色值的问题
Aug 20 Javascript
node.js中的fs.fstatSync方法使用说明
Dec 15 Javascript
js性能优化技巧
Nov 29 Javascript
js时间控件只显示年月
Jan 08 Javascript
解析Vue2.0双向绑定实现原理
Feb 23 Javascript
微信小程序删除处理详解
Aug 16 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
May 29 jQuery
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
JavaScript 学习笔记(十一)
2010/01/19 Javascript
原生js实现日期联动
2015/01/12 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
JS验证码实现代码
2017/09/14 Javascript
vue router demo详解
2017/10/13 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
详细解析Python当中的数据类型和变量
2015/04/25 Python
Python科学计算之NumPy入门教程
2017/01/15 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
Python更换pip源方法过程解析
2020/05/19 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
香港演唱会订票网站:StubHub香港
2019/10/10 全球购物
医学求职信
2014/05/28 职场文书
设计师求职信
2014/07/01 职场文书
好的旅游活动方案
2014/08/19 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
入党介绍人意见2015
2015/06/01 职场文书
信用卡工资证明范本
2015/06/19 职场文书