0

我只需要从客户端的单选按钮组中获取选定的索引。但是,我对 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>
4

2 回答 2

1

请注意,HTML 中没有 RadioButtonList,因此当您编写时,$find("<%= rbgAssetClass.ClientID %>");您可能无法得到您期望的结果。检查生成的 HTML 以查看您想要查找哪个 ID 或添加更多关于您想要完成的内容的信息

于 2013-04-12T14:38:47.073 回答
0

你可以像下面那样做。

在 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-classcompany。你可以通过下面。

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

<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 %>')

参考:

于 2013-04-12T14:11:00.780 回答