jQuery MiniUI

标题: 弹框CloseWindow("ok")无效 [打印本页]

作者: jissie丢    时间: 2014-4-8 11:00:35     标题: 弹框CloseWindow("ok")无效

本帖最后由 jissie丢 于 2014-4-8 11:06 编辑

问题:父页面弹出地图坐标弹框,子页面点击确定按钮关闭页面无效是怎么回事? 点击取消可以关闭页面。
父页面信息
<input id="btnMap" class="mini-buttonedit" name="a" textName="b"  onbuttonclick="onButtonMap" />
            //地图坐标
            function onButtonMap(e) {
                var btnEdit = this;
                mini.open({
                    url: bootPATH + "../../ybt_window/map_window.aspx",
                    title: "地图坐标",
                    width: 690,
                    height: 570,
                    ondestroy: function (action) {
                        if (action == "ok") {
                            var iframe = this.getIFrameEl();
                            var data = iframe.contentWindow.GetData();
                            data = mini.clone(data);    //必须
                            if (data) {
                                btnEdit.setValue(data.key);
                                btnEdit.setText(data.key);
                            }
                        }

                    }
                });
            }

子页面代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="map_window.aspx.cs" Inherits="ybtstore.Web.ybt_admins.ybt_window.map_window" %>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">
        body, html, #allmap { width: 100%; height: 100%; overflow: hidden; hidden; margin: 0; }
    </style>
    <link href="../ybt_inc/css/demo.css" rel="stylesheet" />
    <script src="../ybt_inc/js/boot.js"></script>
    <script src="../ybt_inc/js/jquery-1.6.2.min.js"></script>
    <script src="../ybt_inc/js/common.js"></script>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=P7GiMdauXeoRpcWLul11byAn"></script>
    <title>地图标记</title>
</head>
<body>
    <div class="mini-toolbar" style="text-align:center;line-height:30px;" borderStyle="border:0;">
          <label >名称:</label>
          <input id="key" class="mini-textbox" style="width:150px;"/>
          <a class="mini-button" style="width:60px;">查询</a>
    </div>
    <div class="mini-fit">
    <div style="width: 635px; height: 445px; border: 1px solid gray" id="allmap"></div>
     </div>
    <div class="mini-toolbar" style="text-align:center;padding-top:8px;padding-bottom:8px;" borderStyle="border:0;">
        <a class="mini-button" style="width:60px;"  onclick="onOk()">确定</a>
        <span style="display:inline-block;width:25px;"></span>
        <a class="mini-button" style="width:60px;" onclick="onCancel()">取消</a>
    </div>
</body>
</html>
<script type="text/javascript">
    //////////////////////////////////
    function CloseWindow(action) {
        if (window.CloseOwnerWindow) return window.CloseOwnerWindow(action);
        else window.close();
    }

    function onOk() {
        CloseWindow("ok");
    }
    function onCancel() {
        CloseWindow("cancel");
    }
    var lat = Request['lat'];
    var lon = Request['lon'];
    if (lat == "null" || lat == null) {
        lat = 31.23515;
        lon = 121.523329;
    }

    // 百度地图API功能
    var map = new BMap.Map("allmap", {
        enableMapClick: false
    });
    var point = new BMap.Point(lon, lat);
    map.centerAndZoom(new BMap.Point(lon, lat), 14);
    var marker1 = new BMap.Marker(point);  // 创建标注
    map.addOverlay(marker1);              // 将标注添加到地图中
</script>


作者: factory    时间: 2014-4-8 11:14:37

调用的同一个函数,怎么会一个可以关一个不能关呢?

你在onOk里面,直接执行window.CloseOwnerWindow()能不能关掉
作者: jissie丢    时间: 2014-4-8 11:27:18

factory 发表于 2014-4-8 11:14
调用的同一个函数,怎么会一个可以关一个不能关呢?

你在onOk里面,直接执行window.CloseOwnerWindow()能不能 ...

window.CloseOwnerWindow()可以实现,只是父页面接受收到action为'undefined'空值了
这里为什么不能传window.CloseOwnerWindow('ok')?
我试了下window.CloseOwnerWindow('cancel')是可以的

ondestroy: function (action) {
                        alert(action);//action='undefined'
                        if (action == "ok") {
                            var iframe = this.getIFrameEl();
                            var data = iframe.contentWindow.GetData();
                            data = mini.clone(data);    //必须
                            if (data) {
                                btnEdit.setValue(data.marker);
                                btnEdit.setText(data.marker);
                            }
                        }

                    }
作者: factory    时间: 2014-4-8 11:32:12

jissie丢 发表于 2014-4-8 11:27
window.CloseOwnerWindow()可以实现,只是父页面接受收到action为'undefined'空值了
这里为什么不能传wi ...

[attach]4252[/attach]

function onOk(e) {
            window.CloseOwnerWindow("ok");
        }

带"ok"也一样可以的
mini.open的里面正常弹出action,并且正常关闭弹出框
ondestroy: function (action) {
                        alert(action);
                    }


更新miniui试试

作者: jissie丢    时间: 2014-4-8 11:40:15

factory 发表于 2014-4-8 11:32
function onOk(e) {
            window.CloseOwnerWindow("ok");
        }

我的其他页面window.CloseOwnerWindow("ok")也是有效果的。就这个页面不可以,你能否帮我看下我的哪边有问题?
单独运行子页面点击确定按钮也是可以关闭页面的,在弹框里就不行了
作者: felt    时间: 2014-4-8 12:59:08

jissie丢 发表于 2014-4-8 11:40
我的其他页面window.CloseOwnerWindow("ok")也是有效果的。就这个页面不可以,你能否帮我看下我的哪边有 ...

   <a class="mini-button" style="width:60px;"  onclick="onOk()">确定</a>
   
        <a class="mini-button" style="width:60px;" onclick="onCancel()">取消</a>
把这2个括号去掉看看
作者: jissie丢    时间: 2014-4-8 13:58:10

felt 发表于 2014-4-8 12:59
确定
   
        取消

把这2个括号去掉 onclick="onOk"
父页面可以接收到action=ok;

var iframe = this.getIFrameEl();
                            var data = iframe.contentWindow.GetData();
                            data = mini.clone(data);    //必须
                            alert(data.marker);
                            if (data) {
                                btnEdit.setValue(data.marker);
                                btnEdit.setText(data.marker);
                            }
这些代码无效,无法给父页面的控件赋值。
作者: jissie丢    时间: 2014-4-8 14:40:51

felt 发表于 2014-4-8 12:59
确定
   
        取消

请问父页面如何接收子页面的值,我点击确定就给父页面控件赋值,
比如:我要接收子页面查询的key值,而不是要datagrid1列表里的值。
或者我关闭子页面时,就给父页面赋值可以不?
作者: factory    时间: 2014-4-8 14:51:11

jissie丢 发表于 2014-4-8 14:40
请问父页面如何接收子页面的值,我点击确定就给父页面控件赋值,
比如:我要接收子页面查询的key值,而不 ...

去掉括号跟你下面的var iframe = this.getIFrameEl();...这些代码都无关的

关闭之后,会进入mini.open的ondestory里面,里面可以var iframe = this.getIFrameEl();获取到子页面的iframe,然后可以调用子页面的函数的.

你断点调试看看.哪一步获取出错了.

另外,实在不行,参考这篇帖子,跨页面调用函数. 这个方法是通用的
http://miniui.com/bbs/forum.php? ... 6%E9%A1%B5%E9%9D%A2
作者: factory    时间: 2014-4-17 18:07:09

ywk_3389 发表于 2014-4-17 18:05
同样的问题,请技术解决 一下!!

我上面已经写的很详细了
作者: factory    时间: 2014-4-18 09:24:46

ywk_3389 发表于 2014-4-18 09:17
无法解决!

你仔细对照这个例子
http://www.miniui.com/demo/#src=datagrid/datagrid.html

无法关闭,肯定是你自己代码写的不对,你可以自己调试看看
作者: felt    时间: 2014-4-18 09:35:27

ywk_3389 发表于 2014-4-18 09:26
单独打开可以关闭页面,但是合到一起,就关不了了!!

参考我们demo子页面的关闭方法去修改




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2