2012-04-26 41 views
0

我有一個單選按鈕組和文本區域的ASP .Net頁面。.Net JQuery的單選按鈕切換文本區域

我想切換Crime Description textarea,這樣如果他們選擇「是」,他們必須說明情況。否則,textarea對於其他人都是隱藏的。

兩者都是runat服務器,因此Web表單母版頁會爲兩者創建生成的ID。但是,我似乎無法獲得單選按鈕的價值。

我已經嘗試了其他線程中的幾個解決方案,但他們一直沒有工作。

這裏有幾個JQ方法我都試過:

//.Net throws an error and says that ClientId is not a property of the radio group. 
$('#<%= Crime.ClientId %>').bind('change', function() { 

    var checked = $(this).find('input:radio:checked'); 
    if (checked.length == 0) { 
       alert("NO"); 
      } 
    else { 
       alert("YES"); 
      } 

    var myRadio = $(this); 

          var checkedValue = myRadio.filter(':checked').val(); 

          var show = myRadio.val() == "Yes"; 

          var showOrHide = (myRadio.val() == 1) ? true : false; 

          alert(show + " " + showOrHide + " " + checkedValue); 
          $('#<%= CrimeDescription.ClientID %>').toggle(showOrHide); 

     }); 

我還申請一類的ASPX控制,並試圖對這個變化:

$('.CrimeToggle').click(function() { 
         //maybe traverse down to find the selected??? 
        }); 

淨ASPX

<asp:RadioButtonList RepeatDirection="Horizontal" CssClass="CrimeToggle" ID="Crime" runat="server"> 
      <asp:ListItem Value="Yes">Yes</asp:ListItem> 
      <asp:ListItem Value="No">No</asp:ListItem> 
</asp:RadioButtonList> 

<textarea runat="server" id="CrimeDescription"></textarea> 

我需要選擇所選的單選按鈕並獲取其值。

我必須使用RadioButtonList控件而不是輸入(因爲後端也在爲控件做其他事情)。

這裏是淨生成輸出HTML:

<table id="ctl00_BodyHolder_Crime" class="CrimeToggle" border="0"> 
<tbody> 
<tr> 
<td> 
<input id="ctl00_BodyHolder_Crime_0" type="radio" value="Yes" name="ctl00$BodyHolder$Crime"> 
<label for="ctl00_BodyHolder_Crime_0">Yes</label> 
</td> 
<td> 
<input id="ctl00_BodyHolder_Crime_1" type="radio" value="No" name="ctl00$BodyHolder$Crime"> 
<label for="ctl00_BodyHolder_Crime_1">No</label> 
</td> 
</tr> 
</tbody> 
</table> 
+0

要使用Firebug來調試這種東西... – McGarnagle 2012-04-26 21:34:35

回答

0

這是我結束了,如果任何人有同樣的問題。

$('#<%= Crime.ClientID %>').click(function() { 

      var showHide = $('.CrimeToggle').find('input:radio:checked').val() == "Yes"; 

      $('#<%= CrimeDescription.ClientID %>').toggle(showHide); 

}); 

由於某種原因,我最初開始重新工作。有時候,Visual Studio可能會很麻煩。奇怪。

0

根據您給我們在討論的文本,我相信這個建議是不是直接回答你的問題更有幫助。

當使用JQuery來查找東西時,它通過HTML搜索。您已經發布了不是HTML的.NET ASPX內容,但確實生成了它。有時候,ASP.NET會做你不期望的事情。

因此,而不是與你的JQuery猜測什麼可能工作,看看實際的HTML輸出,並使用Web瀏覽器(幾個瀏覽器允許這個)的控制檯。在查看實際的HTML時,使用控制檯創建一個JQuery表達式,可以提取所需的內容。

然後歡呼!

+0

你好,通常你可以使用服務器標籤來定位一個元素的ID。在無線電組的實例中,單選按鈕沒有ID。我已經用html更新了我的Q.那麼,你能告訴我如何從課堂上用類.CrimeToggle找到所選收音機的值。我試過這個:$('。CrimeToggle')。children('input:radio:checked')。val(); – User970008 2012-04-26 23:55:23

+1

這似乎突然變得有效:$('。CrimeToggle')。find('input:radio:checked')。val(); – User970008 2012-04-27 00:01:25