2010-12-03 31 views
1

J'ai un asp: UpdatePanel qui est caché ou non basé sur le code derrière un asp: DropDownList à OnSelectedIndexChanged.Comment chronométrer une fonction jquery .change pour exécuter après le .net OnSelectedIndexChanged?

Lorsque ce panneau de mise à jour est affiché, il y a quelques jquery pour mettre en évidence la nouvelle zone:

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

Cela fonctionne très bien une fois que le panneau de mise à jour est de montrer à nouveau, mais la première fois qu'il revient, le jquery est en cours d'exécution avant le code derrière, il y a donc une pause de 3000ms puis le panneau est affiché sans mise en surbrillance.

Comment puis-je m'assurer que jquery s'exécute après l'affichage du panneau?

J'ai essayé d'ajouter un si visible et délai au JavaScript:

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

Cela n'a pas fait un changement que le JavaScript est exécuté avant le panneau est de retour.

Et un retard:

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

Cela fonctionnait très bien à retarder le panneau de montrer que le code avait derrière attendre jusqu'à ce que le retard était complet avant de pouvoir afficher le panneau à nouveau.

Merci pour vos idées sur ce sujet.

Répondre

1

Avez-vous déjà essayé le EndRequestHandler?

Jetez un coup d'œil à la publication suivante.

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

Et chercher endRequestHandler sur les forums asp.net a un certain nombre de bons messages.

J'espère que cela peut aider.

Bob

+0

Cela semble prometteur. Jusqu'à présent, j'ai été en mesure d'obtenir la plupart de ce que je cherchais à aller. Merci pour la réponse tardive :) – InsertOldUserIDHere

0

Ne pouvez-vous pas enregistrer le script via le gestionnaire de script de pages, à la fin de votre gestionnaire d'événements OnSelectedIndexChanged?

Vous devrez peut-être également indiquer manuellement au panneau de mise à jour de vous rafraîchir.

+0

Le script est déjà chargé si la balise gestionnaire de script, mais je ne suis pas sûr de ce que vous entendez par « à la fin de votre gestionnaire d'événements OnSelectIndexChanged. » – InsertOldUserIDHere

0

Essayez ceci:

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

Je ne sais pas comment la page est, mais vous devez faire quelque chose aussi bien.

J'espère que ça aide! ;)

+0

J'ai donné un coup de feu et bien que je n'ai pas eu d'erreurs, cela n'a pas fonctionné. Avec le ".load", le panneau n'est jamais surligné. Avec le ".change" le panneau est en surbrillance s'il est déjà visible. – InsertOldUserIDHere