JQuery UI Закрыть диалог и открыть новый диалог - PullRequest
0 голосов
/ 19 апреля 2011

Концепция кажется достаточно простой, но у меня много проблем с ее выполнением.

Мне нужно закрыть текущий диалог и открыть другой. Он закрывает #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 ]

2 голосов
/ 19 апреля 2011

Используйте функцию обратного вызова, которая выполняется, когда диалог завершил свою задачу.

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

}, 
[...]
1 голос
/ 15 ноября 2011

Хм, а вы изменили порядок закрытия и открытия?Допустим, сначала откройте следующий диалог, затем закройте первый?

1 - This;

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

2 - To:

// CLOSE 1 DIALOG AND OPEN ANOTHER
   $('#uploadModal').dialog('open');
   $(this).dialog('close');
0 голосов
/ 25 ноября 2012

Да, это было здесь немного. Я искал, как исправить ту же проблему. Я разместил больше кода, чем нужно, чтобы вы могли видеть, что происходит. Я использовал имя текущего диалога, чтобы закрыть, и имя нового, чтобы открыть. Работает ...

//============= 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" );
        }
    }
});
0 голосов
/ 04 апреля 2012

Попробуйте обернуть ваш открытый вызов uploadModal в setTimeout.

'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
});

но я думаю, что первое отлично подойдет для того, что вы хотите.

0 голосов
/ 14 февраля 2012
$(this).dialog('close');
$('#uploadModal').dialog('open');

Это на самом деле хорошо работает для меня (jquery 1.7 jquery-ui 1.8). Предложенный ответ только закрывает диалог и не открывает новый.

...