easyui的window插件再次封装

easyui的window插件再次封装

说明:该插件弹出的弹出框在最顶层的页面中,而不是在当前页面所在的iframe中,它的可拖动范围是整个浏览器窗口;所以不能用JS的parent对象获取弹出它的父页面,这里用了一个笨方法,最多支持四级弹出框,即弹出框中再弹出弹出框的情况,笨方法也是方法,它很简单、很有效。

代码:

/**
* easyui的window插件再次封装
* 2014年11月10日
*/

SimpoWin = {
    showWin: function showWindow(title, url, width, height) {
        if (!top.SimpoWinId) top.SimpoWinId = 0;
        var divId = "simpoWin" + top.SimpoWinId;
        top.$("body").append('<div id="' + divId + '"></div>');

        top.$('#' + divId).window({
            modal: true,
            title: title,
            width: width,
            height: height,
            collapsible: false,
            minimizable: false,
            maximizable: false,
            content: function () {
                return '<iframe frameborder="0" src="' + url + '" style="width: ' + (width - 14).toString() + 'px; height: ' + (height - 39).toString() + 'px; margin: 0;">';
            },
            onClose: function () {
                top.$('#' + divId).window('destroy');
                top.SimpoWinId--;
            }
        }).window('open');

        top.SimpoWinId++;
        switch (top.SimpoWinId) {
            case 1:
                top.SimpoWinParent1 = window;
                break;
            case 2:
                top.SimpoWinParent2 = window;
                break;
            case 3:
                top.SimpoWinParent3 = window;
                break;
            default:
                top.SimpoWinParent = window;
                break;
        }
    },

    closeWin: function () {
        var divId = "simpoWin" + (top.SimpoWinId - 1).toString();
        top.$('#' + divId).window('close');
    },

    GetWinParent: function () {
        switch (top.SimpoWinId) {
            case 1:
                return top.SimpoWinParent1;
            case 2:
                return top.SimpoWinParent2;
            case 3:
                return top.SimpoWinParent3;
            default:
                return top.SimpoWinParent;
        }
    }
}
View Code

带回调函数版,支持传入url或div容器id:

/**
* easyui的window插件再次封装
* 2014年11月10日
*/

SimpoWin = {
    showWin: function (title, url, width, height, okcallback, closecallback) {
        if (!top.SimpoWinId) top.SimpoWinId = 0;
        var divId = "simpoWin" + top.SimpoWinId;
        top.$("body").append('<div id="' + divId + '"></div>');

        top.$('#' + divId).window({
            modal: true,
            title: title,
            width: width,
            height: height,
            collapsible: false,
            minimizable: false,
            maximizable: false,
            content: function () {
                return '<iframe frameborder="0" src="' + url + '" style="width: ' + (width - 14).toString() + 'px; height: ' + (height - 39).toString() + 'px; margin: 0;">';
            },
            onClose: function () {
                top.$('#' + divId).window('destroy');
                top.SimpoWinId--;
                if (closecallback) closecallback();
            }
        }).window('open');

        top.SimpoWinId++;
        switch (top.SimpoWinId) {
            case 1:
                top.SimpoWinParent1 = window;
                top.SimpoWinOKCallback1 = okcallback;
                break;
            case 2:
                top.SimpoWinParent2 = window;
                top.SimpoWinOKCallback2 = okcallback;
                break;
            case 3:
                top.SimpoWinParent3 = window;
                top.SimpoWinOKCallback3 = okcallback;
                break;
            default:
                top.SimpoWinParent = window;
                top.SimpoWinOKCallback = okcallback;
                break;
        }
    },

    closeWin: function () {
        var divId = "simpoWin" + (top.SimpoWinId - 1).toString();
        top.$('#' + divId).window('close');
    },

    OK: function (data) {
        switch (top.SimpoWinId) {
            case 1:
                top.SimpoWinOKCallback1(data);
            case 2:
                top.SimpoWinOKCallback2(data);
            case 3:
                top.SimpoWinOKCallback3(data);
            default:
                top.SimpoWinOKCallback(data);
        }
    },

    GetWinParent: function () {
        switch (top.SimpoWinId) {
            case 1:
                return top.SimpoWinParent1;
            case 2:
                return top.SimpoWinParent2;
            case 3:
                return top.SimpoWinParent3;
            default:
                return top.SimpoWinParent;
        }
    },

    showWin2: function (title, containerId, width, height, closecallback) {
        top.$('#' + containerId).css("display", "");
        var l = (top.$(top.window).width() - width) / 2;
        var t = (top.$(top.window).height() - height) / 2 + top.$(top.document).scrollTop();
        top.$('#' + containerId).window({
            modal: true,
            title: title,
            width: width,
            height: height,
            left: l,
            top: t,
            collapsible: false,
            minimizable: false,
            maximizable: false,
            onClose: function () {
                if (closecallback) closecallback();
            }
        }).window('open');
    },

    closeWin2: function (containerId) {
        top.$('#' + containerId).window('close');
    }
}
View Code

如何使用:

1、引用该插件的JS文件

2、父页面代码:

SimpoWin.showWin("选择素材", "TextMessageList.aspx", 880, 580);

 3、子页面代码:

var winParent = SimpoWin.GetWinParent();
winParent.setValue(val); //子页面操作父页面
SimpoWin.closeWin(); //关闭弹出框

 

转载于:https://www.cnblogs.com/s0611163/p/4089346.html

2016-1-31 更新 1、使用时不再需要显示调用followCustomHandle方法,即可生效扩展属性。 2013-9-3 更新 1、$.showWindow 和 $.showModalDialog 在useiframe=true时,对窗体body增加遮罩控制。 2、easyui.tabs的add方法当useiframe=true时,增加遮罩控制。 3、toolbar增加url属性,可以通过请求后台数据构建。 4、增加mask(遮罩)扩展。 2013-8-26 更新 1、tree增加支持类标准数据格式加载,具体看demo或jquery.easyui.tree.extend.js文件开头说明。 2、修复datagrid在rowediting编辑风格时点击“确定”按钮无法提交问题。 3、datagrid和treegrid增加getEditingRows方法,用来获取所有正在编辑的行。 4、修复tabs.add方法,当useiframe=true时, iframe的高度改为100%。 5、修复当tabs使用iframe时,右键菜单刷新报错问题。 6、增加combotree对简单数据格式和类标准数据格式的加载,具体参考jquery.easyui.tree.extend.js文件开头说明。 7、修复datagrid.onConfirmEdit事件默认实现bug。 8、增加treegrid.onConfirmEdit事件。 2013-8-12 更新 1、修复combobox在级联操作时,传递的swd参数值为null,而不是选中值。 2、datagrid的addEventListener 方法增加对事件onExpandRow和onCollapseRow的控制。 3、tree增加自定义属性 attributes,用于简单数据加载时,指定那些字段当作node的attributes属性使用。 4、combobox增加 getSelected 方法, 返回选中item的data值。 5、combogrid增加 getSelected 方法,返回选中item的data值。 6、datagrid增加 getAllExpandRowIndex 方法,用于在detailView视图下获取当前页已展开行的索引。 7、datagrid增加 getExpandRowIndex 方法,用于在detailView视图下获取当前页第一个展开行的索引。 8、datagrid增加 fixDetailRowWidth 方法,用于detailView视图下修改rowDetial中组件宽度。 9、getAllExpandRowIndex、getExpandRowIndex、fixDetailRowWidth 这三个方法联合使用可解决detailView视图下列拖拽时显示错位问题。 10、修复datagrid 的rowEditing编辑风格在没有数据的datagrid中增加数据后,再编辑时无法显示的问题。 11、datagrid增加自定义事件 onConfirmEdit , 用于rowEditing编辑风格点击“确定”按钮时触发。当事件返回false时终止endEdit方法调用。 2013-7-31 更新 1、$.showWindow、$.showModalDialog 这两个方法增加返回值,返回值指向当前弹出窗的引用。 2、移除根据$.browser.msie判断浏览器版本。 2013-7-18 更新 1、menu、datagrid、combo、combobox、panel、tabs、tree、treegrid 增加 addEventListener 方法。 2、修复menu、datagrid、combo、combobox、panel、tabs、tree、treegrid 因事件注册造成多次重复渲染的问题(包括多次请求后台数据)。 3、移除datagrid 的rowContextMenu菜单项默认事件替换功能。 4、删除datagrid rowContextMenu默认菜单中的增加、编辑、导出菜单项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值