2009-01-19 73 views
0

我有一个使用母版页的aspx页面。在这个页面上,我有一组单选按钮。我需要获取javascript中单选按钮组中每个元素的checked属性。之前的页面被转换为使用母版页,下面的JavaScript代码的工作只是罚款:使用主页获取单选按钮的价值

if((!f.rblRegUseVehicles[0].checked) && (!f.rblRegUseVehicles[1].checked)) 
{ 
    isValid = "false"; 
} 

f为参照形式。这工作得很好。

当网页被chanded使用母版页,我改变了javascript来执行以下操作:

if((!f.<%=rblRegUseVehicles.ClientID%>[0].checked) && (!f.<%=rblRegUseVehicles.ClientID%>[1].checked)) 
{ 
    isValid = "false"; 
} 

现在,JavaScript是失败,因为它无法找到的元素。在“查看源文件”我有名字的元素:

<input id="ctl00_cphContent_rblRegUseVehicles_0" type="radio" name="ctl00$cphContent$rblRegUseVehicles" value="Yes" /> 

<input id="ctl00_cphContent_rblRegUseVehicles_1" type="radio" name="ctl00$cphContent$rblRegUseVehicles" value="No" /> 

唯一代码的工作原理是

document.<%=Form.ClientID%>.<%=rblRegUseVehicles.ClientID%>_0.checked 

我想的JavaScript引用像以前一样的页面被转换为使用数组主页。我怎样才能做到这一点?

回答

1

如果你想探索使用jQuery而不是直的JavaScript的想法,这应该为你做的伎俩。

if ($('input[id*=rblRegUseVehicles]:checked').length < 0) isValid = "false"; 

该选择器获取所有已检查的单选按钮,其id为“rblRegUseVehicles”。

编辑

如果你想坚持原来的脚本,使用的UniqueID而不是客户端ID可能工作

if((!f.<%=rblRegUseVehicles.UniqueID%>[0].checked) && (!f.<%=rblRegUseVehicles.UniqueID%>[1].checked)) 
{ 
    isValid = "false"; 
} 
2

这是ASP.NET是始终难以一部分。你需要有静态的JavaScript引用动态创建的元素ID!

这是我一直解决了这个问题:

环绕你RadioButtonList在任何你想要一个divp或:

<div id="yourId"> 
    <asp:RadioButtonList id="radiolist1" runat="server"> 
     <!-- ... --> 
    </asp:RadioButtonList> 
</div> 

这使得以这样的事:

<div id="yourId"> 
    <table id="radiolist1" border="0"> 
     <tr> 
      <td> 
       <input id="radiolist1_0" type="radio" name="radiolist1" value="Item 1" checked="checked" /> 
       <label for="radiolist1_0">Item 1</label> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <input id="radiolist1_1" type="radio" name="radiolist1" value="Item 2" /> 
       <label for="radiolist1_1">Item 2</label> 
      </td> 
     </tr> 
    </table> 
</div> 

这将允许你有一个静态的JavaScript函数,其目标是yourId哪得到runat="server"。然后你的javascript看起来像这样:

var rbl = document.getElementById("yourId");    
isValid = (!rbl.getElementsByTagName("input")[0].checked 
    && !rbl.getElementsByTagName("input")[1].checked); 
+0

糟糕的是我的downvote。那是偶然的,我现在不能扭转它。好答案! – 2009-08-11 23:26:04