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也能包含文件
Oct 26 Javascript
Jquery绑定事件(bind和live的区别介绍)
Aug 23 Javascript
JavaScript中的数组特性介绍
Dec 30 Javascript
有关文件上传 非ajax提交 得到后台数据问题
Oct 12 Javascript
jquery实现折叠菜单效果【推荐】
Mar 08 Javascript
详解vue模拟加载更多功能(数据追加)
Jun 23 Javascript
ReactNative Image组件使用详解
Aug 07 Javascript
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
vue watch普通监听和深度监听实例详解(数组和对象)
Aug 16 Javascript
vue-cli配置flexible过程详解
Jul 04 Javascript
微信小程序 checkbox使用实例解析
Sep 09 Javascript
JavaScript this使用方法图解
Feb 04 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 高性能书写
2010/12/11 PHP
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
Python中的默认参数详解
2015/06/24 Python
python的mysqldb安装步骤详解
2017/08/14 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
TensorFlow变量管理详解
2018/03/10 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
Python新手学习标准库模块命名
2020/05/29 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
投标邀请书范文
2014/01/31 职场文书
大学老师推荐信
2014/02/25 职场文书
白血病募捐倡议书
2014/05/14 职场文书
给学校的建议书范文
2014/05/15 职场文书
创文明城市标语
2014/06/16 职场文书
思想品德评语大全
2014/12/31 职场文书