Javascript或JQuery用于ASP.净RadioButtonGroup

Javascript or JQuery for ASP.NET RadioButtonGroup

本文关键字:RadioButtonGroup ASP 用于 JQuery Javascript      更新时间:2023-09-26

我只需要从客户端上的radiobuttongroup中获得选定的索引。然而,我对Javascript/JQuery非常陌生,并且遇到了一些看起来非常奇怪的行为。我在同一个表中有一个下拉列表和一个单选按钮组。在我的脚本中,我有以下内容:

var ddlStatuses = $find("<%= ddlStatuses.ClientID %>");
var rbgAssetClass = $find("<%= rbgAssetClass.ClientID %>");

第一个$find像我期望的那样工作,但是第二个返回null。

两个问题。找到我的单选按钮组并获得其选定索引的最佳方法是什么?为什么$find在同一表中查找这些控件中的一个而不是另一个?

感谢

编辑显示aspx:

    <asp:Panel ID="pnlSelectRoom" CssClass="pnlSelectRoom" runat="server" Width="930px">
        <asp:Table ID="Table1" runat="server" class="tblSelectRoomLayout" Width="100%">
            <asp:TableRow>
                <asp:TableCell>
                    <asp:Label ID="Label6" runat="server" Text="Data Center" Font-Size="Small" </asp:Label>
                </asp:TableCell>
                <asp:TableCell>
                    <asp:DropDownList Width="225px" ID="ddlDataCenter" runat="server" onchange="PopulateRooms(this);"
                        ZIndex="9001" Font-Size="Small" DataValueField="Id" DataTextField="Name" >
                    </asp:DropDownList>
                </asp:TableCell>
                <asp:TableCell>
                    <asp:Label ID="Label7" runat="server" Text="Room" Font-Size="Small"></asp:Label>
                </asp:TableCell>
                <asp:TableCell>
                    <asp:DropDownList Width="225px" ID="ddlRooms" runat="server"  ZIndex="9001" Enabled ="false">
                    </asp:DropDownList>
                </asp:TableCell>
                <asp:TableCell>
                    <asp:Label ID="Label8" runat="server" Text="Asset Status"></asp:Label>
                </asp:TableCell>
                <asp:TableCell>
                    <telerik:RadComboBox Width="225px" runat="server" ID="ddlStatuses" DataValueField="ID"
                        DataTextField="Text" CheckBoxes="true" EnableCheckAllItemsCheckBox="True" ZIndex="9001" CausesValidation="false">
                    </telerik:RadComboBox>                        
                </asp:TableCell>
            </asp:TableRow>
            <asp:TableRow Width="100%">
                <asp:TableCell ColumnSpan="6" HorizontalAlign="Center">
                    <asp:RadioButtonList CssClass="checkBoxAlign" ID="rbgAssetClass" runat="server" AutoPostBack="false"
                        RepeatDirection="Horizontal"
                        Font-Size="Small">
                        <asp:ListItem Selected="True">Base Assets&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</asp:ListItem>
                        <asp:ListItem>Contained Assets&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</asp:ListItem>
                        <asp:ListItem>SubContained Assets</asp:ListItem>
                        <asp:ListItem>All Assets&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</asp:ListItem>
                    </asp:RadioButtonList>
                </asp:TableCell>
            </asp:TableRow>
        </asp:Table>
    </asp:Panel>

请注意,在HTML中没有RadioButtonList,所以当你写$find("<%= rbgAssetClass.ClientID %>");时,你可能得不到你所期望的。检查生成的HTML,看看您想要查找哪个ID,或者添加一些关于您想要完成的任务的更多信息

你可以这样做。

在JavaScript中控件位于内容页还是母版页

<asp:CheckBoxList ID="chkModuleList"runat="server" />
<asp:CustomValidator runat="server" ID="cvmodulelist"
  ClientValidationFunction="ValidateModuleList"
  ErrorMessage="Please Select Atleast one Module" />
// javascript to add to your aspx page
function ValidateModuleList(source, args)
{
  var chkListModules= document.getElementById ('<%= chkModuleList.ClientID %>');
  var chkListinputs = chkListModules.getElementsByTagName("input");
  for (var i=0;i<chkListinputs .length;i++)
  {
    if (chkListinputs [i].checked)
    {
      args.IsValid = true;
      return;
    }
  }
  args.IsValid = false;
}

更新:或者你可以用这种方法,让任意css-class,比如company

您可以使用:checked (http://api.jquery.com/checked-selector/)选择器:

<script>
    $(document).ready(function() {
        $(".company input").click(function() {
            var cnt = $(".company input:checked").length;
            if (cnt == 0)
            {
               // none checked
            }
            else
            {
               // any checked
            }
        });
    });
</script>

你可能想在这些复选框的容器上添加(或使用)一个id,以优化选择器的速度

对于asp.net在控件上混淆客户端id,您可以使用

$('<%= MyControl.ClientID %>')

引用:

  • 检查一个复选框是否在客户端一组复选框中被选中
  • 如何验证用户选择了至少一个复选框?