【问题标题】:Close the popup without reloading the parent window using jQuery关闭弹出窗口而不使用 jQuery 重新加载父窗口
【发布时间】:2015-07-13 17:51:00
【问题描述】:

我正在使用 MVC 和 Jquery。

我的要求如下: 1. 链接将打开一个弹出窗口。 2. 在弹出的窗口中会有一个搜索选项,搜索结果将显示在一个表格中。 3. 表格的一列将被超链接,点击超链接将关闭弹出窗口并检索与超链接相关的值并将其显示到父窗口的文本字段。

我已经编写了以下代码来打开弹出窗口:

<script type="text/javascript">
    $(document).ready(function () {
        $("#lnkSupplier").live("click", function (e) {
            e.preventDefault(); //use this or return false
            var url = $(this).attr('href');
            $("#ListDialog").dialog({
                title: 'Find Supplier',
                autoOpen: false,
                resizable: false,
                height: 650,
                width: 700,
                show: { effect: 'drop', direction: "up" },
                modal: true,
                draggable: true,`enter code here`
                open: function (event, ui) {
                    $(this).load(url);

                },
                close: function (event, ui) {
                    $(this).dialog('close');
                }
            });

            $("#ListDialog").dialog('open');
            return false;
        });
    });
</script>

我编写了以下代码来获取 Json 数据并将它们放在弹出窗口的表格中。

<script type="text/javascript">
    $(document).ready(function () {
        $('#btnSubmit').click(function () {
            $.getJSON('/Supplier/SupplierList/' + $('#CompanyName').val(), function (data) {
                var items = "<table class='gridtable'><tr><th class='CompanyName'>Company Name</th><th class='ContactName'>Contact Name</th><th class='ContactTitle'>Contact Title</th><th class='Country'>Country</th></tr>";
                $.each(data, function (i, supplier) {
                    items += "<tr><td>" + "<a id='" + supplier.SupplierID + "' href='Create/'" + supplier.SupplierID + " class='link' >" + supplier.CompanyName + "</a></td><td>"
                        + supplier.ContactName + "</td><td>"
                        + supplier.ContactTitle + "</td><td>"
                        + supplier.Country + "</td></tr>";
                });
                items += "</table>";
                $('#Suppliers').html(items);
            });
        })

当我单击表列中的“公司名称”超链接时,弹出窗口将自动关闭。我编写了以下代码来关闭弹出窗口并检索父窗口的值。

var val = '';
        $("a.link").live('click', function (e) {
            e.preventDefault();
            val = this.id;
            $('#ListDialog').dialog('close');

        });

但是弹出窗口没有关闭。如果我删除“e.preventDefault()”语句,父窗口将被刷新,其中已有的数据将消失。 这是不对的! 从弹出窗口中检索值后,如何在不重新加载父窗口的情况下关闭弹出窗口。

提前致谢。 帕萨

【问题讨论】:

    标签: jquery asp.net-mvc popup parent


    【解决方案1】:
    jQuery('#simple-dialog-container').trigger('click');
    

    试试这个,它不是最干净的解决方案,但在大多数情况下推荐。

    【讨论】:

    • 这是刷新父窗口和现有值消失。我不想重新加载窗口,而是将值从弹出窗口检索到父级。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2012-07-09
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多