0

当我在下拉列表上使用 jQuery-UI 选择菜单并尝试调用selectedindexchanged事件时,它不会触发,如果我select menu从下拉列表中删除 jQuery 函数,它工作正常。

我无法解决,需要帮助。

我的实现是

<asp:DropDownList runat="server" ID="ddlProjects" AutoPostBack="true" CssClass="form-control ddlStyle" OnSelectedIndexChanged="ddlProjects_SelectedIndexChanged"></asp:DropDownList>

jQuery调用如下:

$('#<%= ddlProjects.ClientID%>').selectmenu().selectmenu("menuWidget").addClass("overflow");

后面的代码是

 protected void ddlProjectToMapped_SelectedIndexChanged(object sender, EventArgs e)
       {
           if(ddlProjectToMapped.SelectedIndex==0)
           {
               divUsersAlreadyMap.Visible = false;
               CloseDivs();
           }
           else
           {
               string selectedItemValue = ddlProjectToMapped.SelectedItem.Value;
               LoadDataInLstUserAlreadyMapped(selectedItemValue);
               OpenControls();
           }
       }

注意:当 jQuery 选择菜单函数调用被移除时,这个函数可以正常工作

4

2 回答 2

2

selectmenu 将选择转换为自定义控件。可能您需要在选择菜单上挂上更改事件,然后从那里触发回发。

$('#<%= ddlProjects.ClientID%>').selectmenu(change: function( event, ui ) {

__doPostBack($(this), '');

}).selectmenu("menuWidget").addClass("overflow");
于 2014-08-13T08:59:08.433 回答
1

首先检查是否有“onchange”属性。
如果没有属性 -> 常规 selectmenu(...)
如果 onchange 属性 -> selectmenu() 带有“更改功能”,则执行代码。(__doPostBack 或其他)

$('select').each(function(){
            var onchg=$(this).attr('onchange');
            if(onchg==undefined){$(this).selectmenu()}
            else{$(this).selectmenu({change:function(){eval(onchg)}});
        });
于 2015-10-19T14:14:24.370 回答