Jquery UI关闭对话框&打开新对话框

时间:2011-04-19 14:45:28

标签: jquery jquery-ui dialog

这个概念看起来很简单,但我在执行它时遇到了很多问题。

我需要关闭当前对话框并打开另一个对话框。它会关闭#imageModal,但不会打开#uploadModal。

有什么建议吗?

编辑:添加了#uploadModal

$("#imageModal").dialog({
    autoOpen: false,
    height: 500,
    width: 500,
    modal: true,
    closeOnEscape: true,
    resizable: false,
    buttons: {
        'Upload Image': function() {
            // CLOSE 1 DIALOG AND OPEN ANOTHER
            $(this).dialog('close');
            $('#uploadModal').dialog('open');

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


$("#uploadModal").dialog({
    autoOpen: false,
    height: 500,
    width: 500,
    modal: true,
    closeOnEscape: true,
    resizable: false,
    buttons: {
        'Upload Image': function() {


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

5 个答案:

答案 0 :(得分:2)

使用对话框完成任务时执行的回调函数。

[...]
'Upload Image': function() {
                // CLOSE 1 DIALOG AND OPEN ANOTHER
                $(this).dialog('close', function() {
                     $('#uploadModal').dialog('open');
                });

}, 
[...]

答案 1 :(得分:1)

嗯,你有改变关闭和打开的顺序吗?我们说,首先打开下一个对话框,然后关闭第一个对话框?

1 - 这个;

// CLOSE 1 DIALOG AND OPEN ANOTHER
   $(this).dialog('close');
   $('#uploadModal').dialog('open');

2 - 致:

// CLOSE 1 DIALOG AND OPEN ANOTHER
   $('#uploadModal').dialog('open');
   $(this).dialog('close');

答案 2 :(得分:0)

$(this).dialog('close');
$('#uploadModal').dialog('open');

这实际上适合我(jquery 1.7 jquery-ui 1.8)。建议的答案仅关闭对话框,不会打开新对话框。

答案 3 :(得分:0)

尝试在setTimeout中包装“uploadModal”打开调用。

'Upload Image': function() { 
    // CLOSE 1 DIALOG AND OPEN ANOTHER 
    $(this).dialog('close'); 
    setTimeout(function () {
        $('#uploadModal').dialog('open');
    }, 100);
}, 

您还可以通过..

绑定到对话框的关闭事件
$("#uploadImage").bind("dialogClose", function () {
    // code goes here
});

但我认为第一种方法可以满足您的需求。

答案 4 :(得分:0)

是的,这已经在这里了一点。我正在寻找如何解决同样的问题。我发布了更多代码然后需要,所以你可以看到最新情况。我使用了当前对话框的名称来关闭以及要打开的新名称。作品...

//============= User Modal ===============================//

$( "#dialog-message" ).dialog({
    autoOpen: false,
    modal: true,
    resizable: false,
    width: 650,
    buttons: {
        Add: function() {
            $('#dialog-message').dialog( "close" );
            $('#dialog-message3').dialog( "open" );
        }
    }
});

$( "#opener" ).click(function() {
    $( "#dialog-message" ).dialog( "open" );
    return false;
}); 

//========== Add User Modal ============================ // 
$( "#dialog-message3" ).dialog({
    autoOpen: false,
    modal: true,
    resizable: false,
    width: 250,
    buttons: {
        Save: function() {
            $( '#dialog-message3' ).dialog( "close" );
        }
    }
});