在加载所有相关数据之前,如何不显示JQuery对话框?

时间:2012-05-23 22:37:17

标签: c# javascript jquery ajax model-view-controller

我在填充所有数据(文本框,下拉菜单等等)之前显示JQuery对话框()的问题。

我只是打电话:

$("#myDiv").dialog("open") is called

然后在对话框属性下:

       $("#myDiv").dialog({
        title: "Edit User",
        autoOpen: false,
        height: 500,
        width: 500,
        modal: true,
        open: function(event,ui){
        url = "/controller/action" + param;
        $(this).load(url);

        ...various $.ajax and $.GetJson calls to populate form drop down menus and other fields...},
        buttons: {
            Cancel: function () {
                $(this).dialog("close");
            }
        },
        close: function () {
            allFields.val("").removeClass("ui-state-error");
        }
    });

这样一个对话框打开,大约一秒后闪烁并填充数据。有时它会滞后,数据根本不会进入字段。在最终填充对话框之前,我可能需要多次关闭/重新打开对话框。 非常令人沮丧。

最简单的方法是什么?我希望每次都能正确填充对话框弹出窗口,并且在它准备就绪之前不要显示。

2 个答案:

答案 0 :(得分:1)

问题在于:

        open: function(){
    ...various $.ajax and $.GetJson calls to populate form drop down menus and other fields...},

不要在打开时填充,在创建

上填充
create: function(){
    ...various $.ajax and $.GetJson calls to populate form drop down menus and other fields...},

答案 1 :(得分:1)

你可以在Ajax / Json调用之前尝试BlockUI插件并阻塞它们,然后在它们之后解锁。这也允许您在对话框上显示加载div。

$.blockUI()
// ajax/json calls
$.unblockUI();