关闭jQuery对话框

时间:2013-01-10 19:09:35

标签: jquery asp.net-mvc-3 jquery-ui

我目前正致力于使用View加载对话框。此视图处理正在购买的产品的插入和编辑。

我遇到的问题是当我保存产品时,我需要关闭对话框并刷新原始页面上的网格。当我尝试这样做时,我试图在父母中找到对话框并触发关闭事件。到目前为止,我一直无法在父母中找到对话框。我已经能够找到网格并强制它刷新。

我的问题是,有没有办法从对话框中触发关闭?顺便说一下,我不确定这是不是问题的一部分,但我使用的是完整的View for my dialog而不是Partial View。

任何帮助将不胜感激。感谢。

最基本的问候, 乍得

编辑:这是我的代码。

查看(父页面)

...
<div id="divPOProduct">
</div>

<script type="text/javascript">
    var selectedIds = [];

    $(document).ready(function () {
            $("#divPOProduct").dialog({
                height: 500,
                width: 700,
                modal: true,
                autoOpen: false,
                draggable: false,
                resizable: false,
                open: function () { },
                close: function (event, target) {
                        alert("Here");
                        return false;
                }
            });

   //"Add" button
            $("#add-poproduct").click(function (e) {
                e.preventDefault();

                var link = '@(Url.Action("POProductAddPopup", "PurchaseOrder", new { purchaseOrderId = Model.Id }))';
                //OpenWindow(link, 600, 500, true);

                $("#divPOProduct").load(link);
                $("#divPOProduct").dialog("open");


                return false;
            });

...

查看(对话框)

$("#save").click(function (e) {
        var validationTest = CheckValidation();

        if (validationTest) {
            var model = {
                ...
            };
            $.getJSON('@Url.Action("SavePurchaseOrderProduct", "PurchaseOrder")', model, function (result) {
                if (result) {
                    //$(this).closest('.ui-dialog-content').dialog('close')
                    window.parent.$("divPOProduct").dialog("close");
                    //$(window.parent).find("divPOProduct").dialog("close");
                }
            });
            return false;
        }
    });
});

您将在if语句中看到的三次尝试结果是我到目前为止所尝试的。我现在可以找到父节点和div,但不能找到对话框。顺便说一句,从结果返回的所有内容都是真/假。

2 个答案:

答案 0 :(得分:1)

enter code here嗯试试这个:

 window.parent.$("#divPOProduct").dialog("close");

OR verbose alternate:

 window.parent.jQuery("#divPOProduct").dialog("close");

或替代

 window.parent.document.jQuery("#divPOProduct").dialog("close");

另一个选择:

 window.opener.jQuery("#divPOProduct").dialog("close");

另一个尝试:在父窗口上创建一个新的JavaScript函数:

function closeMyDialog(){
    alert("closing my dialog");//to debug call
    jQuery("#divPOProduct").dialog("close");
}

然后使用:(在子窗口上)

  window.parent.closeMyDialog();

  window.parent.closeMyDialog

答案 1 :(得分:0)

目前,我的修复是刷新父页面。这不是我想做的,但除非我能解决它,否则,我唯一的解决方案。 感觉很脏讨厌使用这种方法。