解决EasyUI dialog弹出窗口超出父元素,导致不能关闭的bug

easyUI弹出下拉列表被窗口下端遮挡的解决方案 其中的panelHeight属性不能设置为auto,否则就会本窗口遮挡,必须设置为具体的数值:如:30px就会不被遮挡。秋风写于淄博,业务联系与技术交流:QQ:375172665。 阅读详情

使用panel的onMove事件解决了panel,dialog以及window组件在被拖动时,会超出浏览器边界而无法拖回的情况。

当窗口被拖出浏览器有边界时,$(document).width();会增大,增大的部分就是窗口超过浏览器窗口的部分,所以right > browserWidth条件永远无法满足。

如果我们在思考得多一点,其实对于panel,dialog,window三个组件,我们往往要求的并不是它不能超出浏览器界限,而是要求它不能超出父元素界限,而且当父元素的overflow不是hidden的时候,应该允许组件超出父元素右下侧,个人觉得这样更合理。

所以最终的代码改为以下形式较为合理:

       /**

 * add by cgh

 * 针对panel window dialog三个组件拖动时会超出父级元素的修正

 * 如果父级元素的overflow属性为hidden,则修复上下左右个方向

 * 如果父级元素的overflow属性为非hidden,则只修复上左两个方向

 * @param left

 * @param top

 * @returns

 */

var easyuiPanelOnMove = function(left, top) {

	var parentObj = $(this).panel('panel').parent();

	if (left < 0) {

		$(this).window('move', {

			left : 1

		});

	}

	if (top < 0) {

		$(this).window('move', {

			top : 1

		});

	}

	var width = $(this).panel('options').width;

	var height = $(this).panel('options').height;

	var right = left + width;

	var buttom = top + height;

	var parentWidth = parentObj.width();

	var parentHeight = parentObj.height();

	if(parentObj.css("overflow")=="hidden"){

		if(left > parentWidth-width){

			$(this).window('move', {

				"left":parentWidth-width

			});

		}

		if(top > parentHeight-height){

			$(this).window('move', {

				"top":parentHeight-height

			});

		}

	}

};

$.fn.panel.defaults.onMove = easyuiPanelOnMove;

$.fn.window.defaults.onMove = easyuiPanelOnMove;

$.fn.dialog.defaults.onMove = easyuiPanelOnMove;

使用方式:

将js代码保存为js文件,在jquery.easyui.min.js之后引入你保存的js文件即可。


EASY UI封装:创建对话窗口(dialog,window) 题记:最近,项目中使用了EASY UI的对话窗口,但在使用传统方法(定义div-&gt;再实时调用easyui生成dialog或window)存在许多莫名其妙的问题,当refresh新链接时时常出错(要么是新返回的html内的js不执行,要么是console报datagrid错误,但页面正常加载了),经调试发现是旧content未完全释放导致的,曾经尝试监听onClose事件destroy对应... 阅读详情

相关推荐

关于easyui使用<iframe />与Dialog问题

最近在用easyui,在使用过程中,选项卡使用的是<iframe />引入页面,但是,当我在使用Dialog的时候,只是在这个子选项卡中弹出,如果想让它在整个页面中弹出,就要在页面中进行打开Dialog解决方法:在页面中定义打开Dialog函数/* 在页面打开Dialog */ function openDlg(){ $('#userDialog').dialog('open');

Speed_Pig的博客 5634

EasyUI 关闭窗口的modalDialog

为什么80%的码农都做不了架构师?>>> ...

weixin_34199405的博客 467

easyui 解决dialog窗口超出窗口导致不能拖动与关闭

目录问题描述问题解决方法问题解决实践相关代码 问题描述 今天做项目遇到窗口调用diolog对话时,出现diolog窗口的上边拖动和关闭部分超出窗口导致不能拖动和关闭。 问题解决方法 针对panel window dialog三个组件拖动时会超出元素的修正; 如果元素的overflow属性为hidden,则修复上下左右个方向; 如果元素的overflow属性为非hidd...

Gavid的博客 1792

解决jqueryeasyUI dialog 弹出窗体超出浏览器,导致不能关闭bug

使用panel的onMove事件攻克了panel,dialog以及window组件在被拖动时,会超出浏览器边界而无法拖回的情况。 当窗体被拖出浏览器有边界时。$(document).width();会增大,增大的部分就是窗体超过浏览器窗体的部分,所以right > browserWidth条件...

weixin_30455023的博客 282

解决jqueryeasyUI dialog 弹出窗口超出浏览器,导致不能关闭bug

使用panel的onMove事件解决了panel,dialog以及window组件在被拖动时,会超出浏览器边界而无法拖回的情况。 当窗口被拖出浏览器有边界时,$(document).width();会增大,增大的部分就是窗口超过浏览器窗口的部分,所以right > browserWidth条件永远无法满足。

confidence68的专栏 1882

easyuidialog打开导致页面出现滚动条

在开发时,出现了一个很奇怪的bug,在easyui-panel的面板用多个easyui-dialog弹出时,在面板右侧可能会出现滚动条,而且窗口整体不居中,在页面下方,如果关闭dialog,则滚动条又消失了。如图:为什么说可能:在我的页面有5个dialog,分别绑定的是添加、修改、删除、详情、发布的dialog页面,然而5个dialog,有两个dialog打开后出现如下图情况:(下图是点击修改页...

qq_29815027的博客 2812

解决jqueryeasyUI dialog 弹出窗口超出浏览器,导致不能关闭bug[百度博客搬家]

使用panel的onMove事件解决了panel,dialog以及window组件在被拖动时,会超出浏览器边界而无法拖回的情况。 当窗口被拖出浏览器有边界时,$(document).width();会增大,增大的部分就是窗口超过浏览器窗口的部分,所以right > browserWidth条件永远无法满足。 如果我们在思考得多一点,其实对于panel,dialog,window

confidence68的专栏 1107

jqueryeasyUI dialog 弹出窗口超出浏览器,导致不能关闭bug解决方案

jqueryeasyUI dialog 弹出窗口超出浏览器,导致不能关闭bug解决方案 2014年8月30日3233次浏览 相信很多前端朋友都用过jqueryeasyUI,jqueryeasyUI功能很强大,可以实现我们前端很多想要的效果,例如,下拉树也就是select tree等。但是jqueryeasyUI底层构建不是很好,简单的应用还可以,深入开发的话,还是推荐用extjs相对好...

weixin_30885111的博客 259

使用easyui dialog 弹出的一些注意事项

使用easy ui 的dialog弹出制作后台管理系统时需要点击按钮弹出个新的弹出,为了保持每次点击显示出来的数据都是重新渲染,从后台获取的,可以这样来写:function piliangchuli(){ $("").dialog({ title: '批量处理', id:'batchProcessing', width: 920, height:

前端小渣渣 1万+

EasyUI Dialog关闭后,验证提示信息无法关闭且显示在页面最上端

EasyUI Dialog关闭后,验证提示信息仍显示在页面最上端这算是EasyUI的一个bug吧?解决方法:在窗口关闭事件中,删除提示(这貌似并不可行),只能将验证提示隐藏起来。         $('#dialog').dialog({            onClose: function () {                    // 这种方法貌似并不可行            ...

我属码的博客 919

easyui datagrid BUG:刷新之后高度出不来

问题描述:easyUI的datagrid 放在dialog中,第一次可以加载出来列表,但是当dialog close之后再open,datagrid数据加载了,但是没有高度,所以就看不到数据 在度娘上查找了很多资料,都是说通过调用datagrid的"resize",$("#myGrid").datagrid("resize",600);然而我这样修改了之后发现并米有什么用 经过一番对自己代码的审查...

RSRLike1j的博客 1005

dialog弹出的界面显示在(不局限于Iframe中)跳出Iframe显示

注:前端选用的架是easyUI 昨天遇到一个小bug,在界面中的Iframe里的界面弹出只存在于Iframe中,我想让他显示在整个界面里,来操作 首先思想梳理 1.第一步我们要明确想让他在中展示就应该吧弹出的HTML代码写在的前端代码中(默认关闭状态,不显示) 2.第二步在Iframe中的界面JS中调用的控件。用parent.定位的DIV 3.显示出来后JS的执行代码在也在子: @* 新增 *@ <div id="applyAdd" class="easyu

weixin_45286744的博客 1980

jQuery easyui 1.2.5 window、dialog发送两遍请求

jQuery easyui 1.2.5 window、dialog发送两遍请求(刷新两次) dialog继承window,window继承panel、 以dialog为例说明,创建dialog和刷新dialog会发送两遍请求(刷新两次)、本人觉得这是bug解决办法如下, var channelId="1000"; var openedInfoEdit=false function ...

266

解决eazyui的dialog缓存问题,destroy等都是无效的

eazyui的dialog缓存问题这个是分情况的,普通一般情况下,在打开dialog窗口前先将input等内容清空或是设置上相应的值。destroy方法是销毁,会导致dialog无法打开。close是关闭显示,注意关闭的是显示,不是正真的dialog窗口。在有些特殊情况下以上方法全部无效。其实也可以说是这就是eazyui的一个bug吧。举个例子啊,看几张实际项目中的图片 这是个普通的页面,上

dianzijinglin的博客 5067

EasyUI学习第二篇:基础组件(panel、window、dialog、LinkButton、easyLoader )

目标 理解Jquery组件之间的关系 理解Jquery的俩种写法 理解动态加载组件的方法,但不推荐使用 *动态加载 easyloader.js* *jquery.parser.js 解析标签里的class值* 学会查API以及培养调试bug的能力 Panel 面板使用组件的方式 1.html 2.jshtml实现 <div class="easyui-panel" style="widt

邢宇超的博客 899

easyui close的最大化的dialog 切换 tab 再次出现

今天发现一个神奇的bug,easyui中的dialog在经历了d.panel('close');之后,当前的tab仍然未关闭,切换了另一tab,然后回去刚才的tab,发现已经close的dialog又重新出现。 经过反复的实验,只有在我的dialog调整了大小,最大化之后,这种情况才会发生。而如果是以一开始打开的大小close,切换tab是不会再次出现的。于是,再加上一句调整大小恢复最先的...

weixin_30758821的博客 198

kindeditor和jquery easyui不兼容的问题-不显示与不能编辑的问题

KindEditor 和 jQuery-easyui 插件有冲突 浏览器版本: chrome firefox KindEditor版本: 4.1.7 BUG再现步骤: 1. 在 jQuery-easyui 的tabs里加入 再 文本区 <textarea name="...

chouhequ9493的博客 588

EasyUI的progress对象close方法报错的彻底解决方案,easyuiprogress

今天发现EasyUI的一个BUG,进度条的关闭会影响其它窗体的操作。代码如下:function saveCoupon() { $.messager.progress(); $("#fm").form("submit", { url: "Coupon/PutOnCoupon", onSubmit:function(){ var ...

qq_34579060的博客 703
上一篇: 开源的验证码框架Kaptcha实现验证码效果
下一篇: Git和码云的使用
Sunshine_du
博客等级 码龄9年 5粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值