jquery下拉选择器AutoPostback

时间:2010-02-04 23:23:41

标签: asp.net jquery

在jQuery中有任何方法可以区分回发下拉和非回发下拉(ASP.NET 3.5):

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

        } 
       else  
        { 
          //do something else 
        }  

认为必须从脚本调用服务器端功能来确定AutoPostback。

3 个答案:

答案 0 :(得分:4)

通常情况下,要回发的下拉列表将包含一个onchange属性,其中包含“__doPostBack”,但其中还会包含其他内容。

所以你可以做类似下面的事情,我没有测试过,所以希望没有拼写错误

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

答案 1 :(得分:0)

AutoPostBack属性IIRC是服务器端。换句话说,它由服务器解析,实际上从未实际进入浏览器。

代码有点冗余,但你可以给它一个cssClass =“AutoPostback”,然后通过jQuery检查它

答案 2 :(得分:0)

我稍微迟到了这个帖子,但沿途的其他人也许会觉得这很有用。

我也遇到了让jquery ui selectmenu进行回发的问题。之前的评论让我非常接近但是当我运行它时出现了错误。这可能是由于我使用的版本不同,但我最后的解决方法是将回发附加到更改事件有点不同。我不得不将字符串传递给回发调用而不是实际的元素。第一个参数是select元素的ID,第二个参数是应该被调用的服务器端函数的名称。

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