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

最近一直都在用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>

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

可以看到几个问题,一是遮罩层没有全部盖住网页内容,二是对话框不见了,当然不是真的不见了,而是显示到了页面的上方,需要将滚动条拖回到项端方可见到,造成这样的原因很清楚,一是获取网页内容高度不正确,只是得到了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>

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

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

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

复制代码 代码如下:

         $("#confirmd").dialog("move", { top: $(document).scrollTop() + ($(window).height() - 200) * 0.5 }); //移动到当前内容页面的中间
         $(".window-mask").css({ height: $(document).height()}); //调整遮罩层的高度为网页内容高度

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

时间: 2024-07-29 02:17:49

jQuery前端框架easyui使用Dialog时bug处理_jquery的相关文章

前端框架-easyui datagrid 的显示问题

问题描述 easyui datagrid 的显示问题 如图 如何删除多余的长度 解决方案 datagrid配置fitColumns为true <table class="easyui-datagrid" data-options="fitColumns:true 解决方案二: Easyui Datagrid的Rownumber行号显示问题[解决方法]EasyUI DataGrid无数据时不显示滚动条问题easyui datagrid遇到的问题

jQuery Validation插件remote验证方式的Bug解决_jquery

不过奇怪的是,最近用下来感觉有些古怪,因为好像有些死板,已有功能的应变能力还不强,甚至还有个奇怪的Bug.任何项目有Bug其实也正常,但这个Bug其实是一个文档上已经记载了,却没有实现的功能,这就有些说不过去了.这个问题便出在remote验证方式上,还好修改起来非常容易,在此记录一下,也方便以后的参考. 在表单验证时,有时候会需要发一个AJAX请求去服务器上进行判断,例如在用户注册时检查用户名是否存在.jQuery Validation插件提供了一种remote方式来实现这一点.例如我可以这样验

HTML 5 前端框架jQuery Mobile使用教程

1. 简介 jQuery Mobile是由(MT)Media Temple联合多家移动设备厂商以及软件企业共同发起的针对触屏智能手 机与平板电脑的Web应用的前端开发框架. jQuery Mobile构建于大名鼎鼎的jQuery 以及 jQuery UI类库之上,为前 端开发人员提供了一个兼容所有主流移动设备平台的统一UI接口系统.拥有出色的弹性,轻量化以及渐进增强特性与可访问 性. jQuery Mobile框架遵循"write less, do more"思想来设计,通过该框架,用

jquery easyui 的dialog怎么样在里面加载一个页面,页面的的数据从数据库返回出来

问题描述 jquery easyui 的dialog怎么样在里面加载一个页面,页面的的数据从数据库返回出来 如图 解决方案 嵌套iframe,或者用jquery加载网页到divhttp://blog.csdn.net/linlin_juejue/article/details/8211291 解决方案二: AJAX JSON返回,写一个查询的函数 解决方案三: jquery easyui dialog可以两种方式使用: 第一种: 1.定义div,使用iframe 解决方案四: dialog+da

easyui dialog-easyui中弹出dialog时,更改弹出的位置

问题描述 easyui中弹出dialog时,更改弹出的位置 easyui中弹出dialog时,更改弹出的位置 绝对位置可以通过设置top和left属性.但是如果想更具某个按钮的位置进行弹出,不知道该怎么办啊.请各位大神赐教? 我在js中这样设置不行 $("#dialogDiv").offset({top:100,left:0}); 解决方案 终于解决了,还是我自己来回答吧. 在弹出dialog的时候不用$('#dialogDiv').dialog('open');打开.用$('#dia

dwz框架-DWZ弹出dialog时弹出错误

问题描述 DWZ弹出dialog时弹出错误 添加 在打开过程中报错0x800a138f - JavaScript 运行时错误: 无法获取未定义或 null 引用的属性"open" $.pdialog.open(url, rel, title, options);中options的close是undefined, param为空

前端框架你究竟选什么

在做web开发的时候难免遇到一个问题,那就是,选择什么样的框架.下面把前端的框架简单的列一下. 1.flex Apache基金会今天发布了Flex 4.8版本,这是Adobe将Flex捐献给Apache基金会后发布的第一个版本. 需要注意的是,Flex目前还在孵化阶段,还不是Apache的正式项目,Flex 4.8也不是一个正式的Apache版本. Apache称,该版本标志着Flex新时代的开始,Flex的未来将由社区来驱动,而不是由一个公司驱动.开发者可以通过贡献代码,来帮助改进Flex,如

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装    (5):前台Jquery easyUI实现    (6):EF上下文实例管理    (7):DBSession的封装   (8):DBSession线程内唯一     

《Web前端开发最佳实践》——2.3 合理使用前端框架

2.3 合理使用前端框架 JavaScript本身是一种很强大的脚本语言,但是JavaScript固有的灵活性和由于使用多浏览器而产生的复杂性,在使用时并不能得心应手.此种状况下,JavaScript框架的重要性就显现出来了.JavaScript框架是JavaScript代码的工具集和函数集,一般包括DOM元素操作.DOM事件的封装.AJAX操作.UI控件封装以及一些功能算法的扩展等,如string.array等的功能扩展.好的JavaScript框架已经经过了大量的功能测试.性能测试,也经过了