2010-02-04 82 views
7

在jQuery中有沒有什麼辦法postbacking下拉列表和非postbacking者(ASP.NET 3.5)來區分:jQuery的下拉選擇自動回

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

     } 
     else 
     { 
      //do something else 
     } 

想到要在這裏從腳本中調用服務器端函數來確定的AutoPostBack 。

回答

4

通常,將會回傳將有一個onchange下拉包含類似屬性「__doPostBack(」儘管也會有一些其他的東西在裏面。

所以,你可以做類似下面,我沒有測試,所以希望有沒有錯別字

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

有一個錯字,但如果你選擇[onchange * =「__ doPostBack」]'那麼這很好,非常感謝。 – Victor 2010-02-05 00:58:44

0

AutoPostBack屬性IIRC是服務器端。換句話說,它是由服務器解析的,並且實際上並沒有將它傳遞給瀏覽器。

它會是一個有點多餘代碼明智的,但你可以給它一個的CssClass =「自動回」,然後通過jQuery檢查該

+0

感謝您的回覆。是的,我知道這是一個服務器端,這就是爲什麼我說我可能必須從選擇器 – Victor 2010-02-04 23:54:03

+0

這裏調用服務器端功能好吧,想一想,大多數控件設置爲自動回發是通過javascript來做的,所以也許有一種方法來檢查。 – 2010-02-05 00:17:03

+0

是的,結果是,看到上面的回覆 – Victor 2010-02-05 01:02:31

0

我稍微晚點了這個帖子,但是也許其他人會發現這個有用。

我也有問題讓jquery ui selectmenu做回發。之前的評論讓我非常接近,但是當我運行它時出現了錯誤。這可能是由於我使用的版本不同,但我的最終解決方法是將回發附加到更改事件中,方法稍有不同。我不得不將字符串傳遞給回發調用,而不是實際的元素。第一個參數是select元素的ID,第二個參數是應該調用的服務器端函數的名稱。

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