JQuery модал открывается на полную страницу - PullRequest
3 голосов
/ 08 апреля 2009

У меня есть вложенные jquery модалы Modal1 и modal2, оба содержат updatePanels. Для обновления панелей я использую JavaScript:

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._doPostBack('UpDateLookUp','');

UpDateLookUp - это идентификатор updatePanel для modal1. Modal1 содержит ссылку, которая находится в updatePanel, для modal2. Modal1 updatePanel - это критерий поиска (Найти) вне панели, который отлично работает, пока я на модал1, но когда я открываю модал2 (имеет wpdatePaneltoo) и возвращаюсь к модал1, выбираю Найти модал2, открывается на полную страницу и отображает информацию перед он был закрыт и возвращен в модал1. Если я нажимаю на ссылку, которая открыла modal2, все хорошо, это происходит только тогда, когда я выбираю другую кнопку.

Я новичок в jquery, поэтому, пожалуйста, помогите. Так работает наш магазин.

1 Ответ

0 голосов
/ 20 декабря 2011

Здесь вам понадобятся две или три вещи. Прежде всего, если какой-либо элемент управления, к которому вы подключаетесь, исчезает в вашей обратной записи ajax, вы захотите перехватить обработчики событий при перезагрузке страницы, используя следующее:

function pageLoad(sender, args) 
{
    if (args.get_isPartialLoad()) 
    {
        //Re-hook code here
    }
}

или используйте функцию .live () в функции $ (document) .ready () для добавления перехватчиков событий. Эта функция хорошо документирована на сайте API JQuery UI .

Кроме того, если вы хотите, чтобы анимационный эффект что-то скрывал перед выполнением постбека (что не позволит ему измениться до завершения анимации), используйте функции .Promise (). Done () следующим образом:

$("#Detail").fadeOut().promise().done(function () 
{
    __doPostBack('<%= UpdatePanel1.ClientID %>', '');
});

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

var ShowDetailsOnLoad = false;

function pageLoad(sender, args) 
{
    if (args.get_isPartialLoad()) 
    {
        if (ShowDetailsOnLoad)
        {
            $("#Detail").fadeIn();
            ShowDetailsOnLoad = false;
        }

        $('DetailVisMaker').click(function() 
        {
            $("#Detail").fadeOut().promise().done(function () 
            {
                __doPostBack('<%= UpdatePanel1.ClientID %>', '');
                ShowDetailsOnLoad = true;
            });
        });
    }
}

Если div, HTML и UpdatePanel настроены правильно, этот код покажет подробный div, а когда пользователь щелкает ссылку внутри него, он исчезает из раздела подробностей, запускает постбэк, затем исчезает вернуться после завершения постбэка.

...