2012-04-24 456 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