2012-04-24 179 views
2

我有我的ASP.NET页面上的以下下拉菜单:显示/隐藏DIV

<asp:DropDownList ID="selectAttending" runat="server"> 
       <asp:ListItem Value="Select One...">Select One...</asp:ListItem> 
       <asp:ListItem Value="Yes">Yes</asp:ListItem> 
       <asp:ListItem Value="No">No</asp:ListItem> 
      </asp:DropDownList> 

我也有下面的脚本:

$(function(){ 
$("#selectAttending").change(function() { 
ToggleDropdown(); 
}); 
ToggleDropdown(); 
}); 

function ToggleDropdown(){ 
if ($("#selectAttending").val() == "No") { 
    $("#ifAttending").hide(); 
} 
else{ 
    $("#ifAttending").show(); 
} 
}; 

的DIV标签我想显示他们是否参加: #ifAndingnding

我是否需要在下拉菜单中添加一个属性来显示/隐藏更改或者代码是否错误?

+1

你知道你的ID是正确的吗? 'selectAttending'可能有.net附加的限定符。检查呈现的页面? – SouthShoreAK 2012-04-24 17:52:17

+0

运行应用程序时,如何呈现selectAttending的HTML ID?它真的只是“selectAttending”吗? – MilkyWayJoe 2012-04-24 17:53:43

+1

一个.... dangit的儿子这是第二次难倒我。谢谢。 – Geekender 2012-04-24 17:55:35

回答

1

虽然您的代码应该可以工作,但您可以简化并尝试此代码。请注意,我正在使用jQuery toggle方法,它采用布尔参数来显示/隐藏元素。

$(function(){ 
    $("#selectAttending").change(function() { 
     $("#ifAttending").toggle(this.value == "Yes") 
    }) 
    .change();//trigger the change event on page load 
}); 
1

该代码看起来正确。我的猜测是您的客户端DropDownList的ID不完全是selectAttending,因为naming containers

您可以使用一个CSS类的名称,或用语法获取客户端ID,如:

$("#<%=selectAttending.ClientID%>") 
4

的问题是,selectAttending在页面背后的ASP代码中使用控件的ID,而不是下拉列表的id元素在html中。

你必须这样做是为了得到控制的客户端ID:

$(function(){ 
    $("#<%=selectAttending.ClientID%>").change(function() { 
     ToggleDropdown(); 
    }); 
    ToggleDropdown(); 
}); 

function ToggleDropdown(){ 
    if ($("#<%=selectAttending.ClientID%>").val() == "No") { 
     $("#ifAttending").hide(); 
    } 
    else{ 
     $("#ifAttending").show(); 
    } 
}; 
2

您使用.NET所以在jQuery的标识符不#selectAttending ,除非你使用的ClientIDMode =“静“如果不是你的标识符将在.net selectAttending.UniqueID