如何使用javascript从radiobutton列表中查找所选项目

时间:2012-02-20 09:52:54

标签: asp.net radiobuttonlist

我需要使用javascript从radiobutton列表中找到所选项目... 这是我的代码

  <asp:RadioButtonList name="test" ID="RadioButtonList1"  runat="server">
    <asp:ListItem Text="List1" Value="1"></asp:ListItem>
    <asp:ListItem Text="List2" Value="3"></asp:ListItem>
    </asp:RadioButtonList>
    <asp:Button Text="test" runat="server" OnClientClick=" GetListItem()" />

脚本:

<script type="text/javascript" language="javascript">
function GetListItem() {
    var id = document.getElementById("<%=RadioButtonList1.ClientID%>");
    alert(id.selectedItem.value())//Error: 'selectedItem' is null or not an object;
}

如何从该列表中找到selectedItem

4 个答案:

答案 0 :(得分:7)

这是一种相当简单的方法来实现这一目标。如果要在用户单击时找到所选列表项,请在单击列表项时使用javascript函数向RadioButtonList中的每个项添加onclick属性。 “this”参数将列表项传递给javascript函数:

<asp:RadioButtonList name="test" ID="RadioButtonList1"  runat="server">
<asp:ListItem Text="List1" Value="1" onclick="myListItemClick(this);"></asp:ListItem>
<asp:ListItem Text="List2" Value="3" onclick="myListItemClick(this);"></asp:ListItem>
</asp:RadioButtonList>

请注意,对于ListItem控件,ASP.NET intellisense无法识别'onclick'属性,但它仍将触发客户端javascript函数。

现在在你的javascript函数中:

function myListItemClick(e) {
    alert('Selected value: ' + e.value);
}

确保为所有列表项添加“Value”属性,以使其正常工作(正如您已经完成的那样)。

如果您不希望在用户点击时执行此操作,则可以通过这种方式完成此操作。在你的标记中:

<script type="text/javascript" language="javascript">
        var radioList = '<%= RadioButtonList1.ClientID %>';
</script>

然后在你的javascript中:

function getSelectedListItem() {
   var radioButtonList = document.getElementById(radioList);
   var listItems = radioButtonlist.getElementsByTagName("input");
   for (var i = 0; i < listItems.length; i++) {
       if (listItems[i].checked) {
          alert("Selected value: " + listItems[i].value);
       }
   }
}

答案 1 :(得分:6)

您可以尝试使用以下JavaScript代码。

  function GetListItem() {

            var radioButtonlist = document.getElementsByName("<%=RadioButtonList1.ClientID%>");
            for (var x = 0; x < radioButtonlist.length; x++) {
                if (radioButtonlist[x].checked) {
                    alert("Selected item Value "  + radioButtonlist[x].value);
                }
            }

答案 2 :(得分:2)

我试图从用户控件中的RadioButtonList中找到所选列表项,而sharmila的代码不起作用。我不得不使用.UniqueID

而不是RadioButtonList1.ClientID
function getListItem() {
    var rbs = document.getElementsByName('<%= RadioButtonList1.UniqueID %>');
    for(var i = 0; i < rbs.length; i++){
        if(rbs[i].checked){
            return rbs[i].value;
        }
    }
    return null;
}

答案 3 :(得分:-1)

如果将<asp:RadioButtonList>放在母版页中,HTML编译器会自动添加&#34; ctl00 $&#34;到你的单选按钮名称,并为每个列表项生成ID。

因此,您最好使用document.getElementByName("ctl00$test");在javascript中找到单选按钮。

或者您可以从here找到更好的解释。