Как рассчитать время выполнения функции jquery .change после .net OnSelectedIndexChanged? - PullRequest
1 голос
/ 03 декабря 2010

У меня есть asp: UpdatePanel, которая скрыта или не основана на коде, стоящем за asp: DropDownList в OnSelectedIndexChanged.

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

  $(document).ready(function(){
      $('#Alert').animate({backgroundColor:'#FF953F'});
      $('#Alert').animate({backgroundColor:'white'}, 3000);
  });

Это прекрасно работает, когда панель обновлений снова показывается, но при первом возвращении jquery запускается до кода позади, поэтому возникает пауза 3000 мс, а затем панель отображается сбез выделения.

Как я могу убедиться, что jquery запускается после отображения панели?

Я попытался добавить в JavaScript видимое и задержку:

        $('#<%=ddlInfo.ClientID %>').change(function(){
            if( $('#Alert').is(':visible')){
                $('#Alert').animate({backgroundColor:'#FF953F'});
                $('#Alert').animate({backgroundColor:'white'}, 3000);
            };
        });

Это не внесло изменений, так как JavaScript запускается до возвращения панели.

И задержка:

    $('#Alert').delay(1000).animate({backgroundColor:'#FF953F'});

Это прекрасно сработало, когда панель не отображалась как код позадипришлось подождать, пока задержка не закончится, прежде чем она снова сможет показывать панель.

Спасибо за любые идеи по этому поводу.

Ответы [ 3 ]

1 голос
/ 11 января 2011

Вы уже пробовали EndRequestHandler?

Взгляните на следующий пост.

http://zeemalik.wordpress.com/2007/11/27/how-to-call-client-side-javascript-function-after-an-updatepanel-asychronous-ajax-request-is-over/

И поиск endRequestHandler на форумах asp.net содержит много хороших сообщений.

Надеюсь, это поможет.

Bob

0 голосов
/ 03 декабря 2010

Попробуйте это:

    $('#<%=ddlInfo.ClientID %>').load(function(){
        if( $(this).is(':visible'))
        {
            $('#Alert').animate({backgroundColor:'#FF953F'});
            $('#Alert').animate({backgroundColor:'white'}, 3000);
        };
    });

Я не знаю, как выглядит страница, но вам нужно сделать что-то похожее.

Надеюсь, это поможет! ;)

0 голосов
/ 03 декабря 2010

Не можете ли вы зарегистрировать скрипт через менеджер скриптов страниц в конце вашего обработчика события OnSelectedIndexChanged?

Вам также может потребоваться вручную указать панели обновления обновить.

...