2010-05-13 304 views
0
var radiobox = document.getElementById('<%=rdoRiskAccepted.ClientID%>'); 

      alert(radiobox[0].checked); 

我得到一個未定義的警報。我究竟做錯了什麼。需要javascript代碼幫助

+0

基本調試第一。錯誤控制檯中的任何錯誤?您使用的ID實際上是在瀏覽器中輸出的,並且是否有帶該ID的單選按鈕? – 2010-05-13 11:13:40

+0

嘗試將<%= rdoRiskAccepted.ClientID%>放入不可見的文本框(其中style =「display:none」),然後訪問文本框的ID。我不認爲JavaScript可以訪問.net變量(所有的想法我不太瞭解.net,所以我可能是明目張膽的錯誤)。 再次想到,pass是作爲js函數中的一個變量。 – Random 2010-05-13 11:18:40

回答

5

getElementById返回一個元素,因爲,即使對於廣播組,the id attribute must be unique。您應該使用name屬性來指定一個無線電組,並使用getElementsByName代替。例如:

<input type="radio" name="myRadio" checked><label>1</label> 
<input type="radio" name="myRadio"><label>2</label> 

JS

var radiobox = document.getElementsByName("myRadio"); 
alert(radiobox[0].checked); 
+0

我使用asp:radiobuttonlist,所以我只有ID ...沒有名字 – 2010-05-13 11:27:59

+0

嚴重嗎? ASP不允許你訪問這個名字?好吧,如果是這樣,只需使用ID獲取第一個ID,然後訪問.name屬性以獲取單選按鈕集的名稱,然後按索引訪問。 – scunliffe 2010-05-13 11:36:54

+0

@vaibhav:我不使用ASP,但是您的ASP.net標記仍然必須呈現爲有效的HTML代碼。根據我讀過的一些頁面,單選按鈕是以列表的'id'作爲它們的'name'呈現的,所以使用'document.getElementsByName('<%= rdoRiskAccepted.ClientID%>');'should工作。 – 2010-05-13 11:48:28

1

使用alert(radiobox .checked);

我也想知道爲什麼你正在使用的clientid只有你必須使用<%= this.page.clientid +「_」 + rdoRiskAccepted.ClientID%>

+1

rdoRiskAccepted.ClientID將返回控件的完整客戶端ID,其中包含頁面/內容佔位符等ID。 – 2010-05-13 11:23:35

0

使用jQuery ...

<asp:radiobuttonlist ID="rdoRiskAccepted" runat="server"> 
    <asp:listitem Value="True" Selected="true">Yes</asp:listitem> 
    <asp:listitem Value="False">No</asp:listitem> 
</asp:radiobuttonlist> 

<script type="text/javascript"> 
//<![CDATA[ 
$(document).ready(function(){ 
    var riskAccepted=$('#<%=rdoRiskAccepted.ClientID%> input'); 
    alert(riskAccepted[0].checked); //true 
}); 
//]]> 
</script>