Откройте fancybox, пока открыт другой экземпляр fancybox - PullRequest
4 голосов
/ 04 декабря 2011

Когда пользователь нажимает на кнопку, я показываю необычную коробку, которая указывает, что пользователь должен дождаться завершения действия:

jQuery(document).ready(function () {
             $.fancybox('Please Wait...',{'modal':true});
        });

Теперь я проверяю запрошенное действие с помощью функции $ .post и возвращаю результат.сообщение (либо действие было успешным, либо ошибка, по которой действие не выполнено), и теперь я хочу закрыть первый fancybox и показать новый fancybox с ответом, который я получил от ajax:

$.post('someurl.aspx',{'somethingtopost':'value'},
function(data){
jQuery(document).ready(function () {
$.fancybox(data);
         });
     }
);

Проблема заключается во второмfancybox не показываетЕсть много примеров показа второго fancybox при закрытии первого (добавление к атрибуту onClosed), но так как в этом я не хочу показывать второй fanybox после закрытия первого, я хочу показать его, когда действиезавершено.

1 Ответ

7 голосов
/ 05 декабря 2011

Вы можете активировать второй Fancybox в любое время, независимо от того, есть ли он уже открытый (и не закрывая его первым). Просто попробуйте запустить второй Fancybox, когда действие будет завершено.

Второе окно Fancybox (после его запуска) заменит первое без какой-либо команды закрытия.

function openFancybox() {
    setTimeout( function() {$('#delayed').trigger('click'); },10000);
}
$(document).ready(function() {
    $('#pageLoad').fancybox({
        helpers: {overlay:{opacity: 0.3}}
    }).click();
    openFancybox();
    $('#delayed').fancybox({
        helpers: {overlay:{opacity: 0.3}}
    });
}); // ready

Я установил пример страницы здесь , которая запускает Fancybox при загрузке страницы, а затем запускает второй Fancybox через 10 секунд.

Первый Fancybox автоматически закрывается после срабатывания второго.

UPDATE

Или, может быть, вы бы предпочли эту версию

function openFancybox() {
    setTimeout( function() {$('#delayed').trigger('click'); },10000);
}
$(document).ready(function() {
    $('#goProcess').click(function(){
        $.fancybox({
            href: '#wait',
            modal: true,
            helpers: {overlay:{opacity: 0.3}},
            afterLoad: function() {
                openFancybox();
            }
        }); // fancybox
    });
    $('#delayed').fancybox({
        helpers: {overlay:{opacity: 0.3}}
    });
}); // ready

Открывайте fancybox по нажатию кнопки, затем через 10 секунд запускается второй fancybox. (или после завершения процесса в фоновом режиме.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...