2010-02-04 5 views
7

jQuery est-il possible de faire la distinction entre les listes déroulantes postbacking et les non-postbacking (ASP.NET 3.5):jquery sélecteur déroulant autopostback

$('select').change(function(e) 
{ 
     //something like this 
     if ($(this).attr('AutoPostback') == true) 
     { 
      //do something here 

     } 
     else 
     { 
      //do something else 
     } 

Pensez doivent appeler la fonction côté serveur ici de script pour déterminer autopostback .

Répondre

4

En règle générale, un menu déroulant qui va postback aura un onchange attribut qui contient quelque chose comme « __doPostBack (» mais il y aura aussi quelques autres trucs là-dedans.

Ainsi, vous pouvez faire quelque chose comme ci-dessous, que je n'ai pas testé si nous espérons qu'il n'y a pas des fautes de frappe

$('select[onchange*="__doPostBack("]').change(...your handler for postbacking control...); 
$('select:not([onchange*="__doPostBack("])').change(...your handler for non-postbacking control...); 
+0

Il ya une faute de frappe, mais si vous choisissez 'onchange * = "__PostBack"]' alors tout est génial, merci beaucoup. – Victor

0

L'attribut AutoPostBack, IIRC, est côté serveur. En d'autres termes, il est analysé par le serveur et ne parvient jamais au navigateur.

Ce serait un peu redondant sage code, mais vous pouvez lui donner un CssClass = « autopostback », puis vérifier que via jQuery

+0

Merci pour votre réponse. Oui, je sais que c'est un côté serveur, c'est pourquoi j'ai dit que je devrais probablement appeler une fonction côté serveur ici à partir du sélecteur – Victor

+0

Eh bien, à y penser, la plupart des contrôles mis à faire auto-postback le font via javascript, alors peut-être il y a un moyen de vérifier cela. –

+0

Oui, il s'avère qu'il y a, voir réponse ci-dessus – Victor

0

Je suis tombé sur ce fil un peu tard mais peut-être que quelqu'un d'autre en chemin trouvera cela utile. J'ai également eu des problèmes pour obtenir le menu select jquery ui pour faire une publication. les commentaires précédents m'ont assez proche mais des erreurs sont apparues quand je l'ai couru. Cela peut être dû à la version différente que j'utilise mais mon dernier correctif a été d'attacher un peu différemment la publication à l'événement de modification. J'ai dû passer des chaînes à l'appel de publication au lieu de l'élément réel. Le premier paramètre est l'ID de l'élément select et le second est le nom de la fonction côté serveur qui est supposée être appelée.

$("#cboStateFilter").selectmenu({ 
    change: function (event, ui) { __doPostBack("cboStateFilter", 'cboStateFilter_SelectedIndexChanged'); } 
});