【问题标题】:UI Dialog opens multiple timesUI 对话框多次打开
【发布时间】:2014-10-07 10:41:20
【问题描述】:

我在点击按钮时打开对话框,如果我点击了多次,那么对话框会打开两次。我不希望出现最上面的小对话框,我只需要后面的对话框。 两个对话框中都显示相同的数据。 见附图

我正在使用下面的代码

$(document).ready(function () {

    $("#policyDialog").html("");
    $('#policyDialog').dialog({
        autoOpen: false,
    });
});

function onViewDetails(policyID) {
    var policyID = policyID;
    var policydetaildialog = "";
    var title = "title";

    $(".loading").css({
        'display': 'block'
    });
    $('#policyDialog').dialog({
        width: 1000,
        autoResize: false,
        draggable: false,
        hide: null,
        modal: true,
        height: "auto",
        maxHeight: 500,
        maxWidth: 1000,
        minHeight: 450,
        minWidth: 450,
        title: title,
        close: function (e) {
            //e.preventDefault();
        }
    });
    $.ajax({
        type: 'POST',
        url: "xyz.jsp",
        data: {
            dataID: policyID
        },
        success: function (response) {
            //$("#policyDialog").html(response);
            policydetaildialog = response;
            $("#policyDialog").dialog('open');
            //$("#policyDialog").html(policydetaildialog);
            $("#policyDialog").html(response);
        },
        dataType: "html",
        async: false
    });

    /* $("#policyDialog").dialog('open');
            $("#policyDialog").html(policydetaildialog);
            return false; */

    //$("#policyDialog");

    //$('#viewDetail').prop('disabled', true);
}

我在下面调用了这个函数

<button type="button" class="btn" id="viewDetail" onclick="onViewDetails('<%=policy.getPolicyId()%>');">View details</button>

下面是我的html

<div id="policyDialog"></div>

还请查看以下屏幕截图:

【问题讨论】:

  • 请贴出相关的html
  • 删除 $('#policyDialog').dialog({ autoOpen: false, });从document.ready

标签: jquery css jquery-ui


【解决方案1】:

您无需在每次单击按钮时都创建另一个对话框。

将您的对话框声明移出点击处理程序:

var _PolicyDialog;
$(document).ready(function () {
    $("#policyDialog").html("");
    _PolicyDialog=$('#policyDialog').dialog({
        autoOpen: false,
        width: 1000,
        autoResize: false,
        draggable: false,
        hide: null,
        modal: true,
        height: "auto",
        maxHeight: 500,
        maxWidth: 1000,
        minHeight: 450,
        minWidth: 450,
        title: title,
        close: function (e) {
            //e.preventDefault();
        }
    });
});

在你的 ajax 函数中,打开这样的对话框:

_PolicyDialog.dialog("open");

看看这个Example

【讨论】:

  • 我试过这个,但没有用..第一件事 - 空白对话框在文档准备就绪时打开..第二件事 - 第一次对话框正确显示,但第二次出现错误“未捕获的错误:无法在初始化之前调用对话框上的方法;尝试调用方法“打开”“
  • 哎呀我的错,我忘了提到你需要将它分配给一个变量并使用该变量打开它。生病更新我的答案
  • 那么你有另一段代码试图在初始化之前调用对话框,这段代码对我来说很好......
猜你喜欢
  • 1970-01-01
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
相关资源
最近更新 更多