asp.net:如何使用javascript或jquery访问repeater生成的元素?

asp.net:如何使用javascript或jquery访问repeater生成的元素?,javascript,jquery,asp.net,repeater,Javascript,Jquery,Asp.net,Repeater,我用的是母版页和转发器。我需要实现对所需字段验证器的选择性使用。当选择“是”(即ID为“rblMayContact”的RadioButtonList中值为“0”的列表项)时,应启用(激活)ID为“rfvSupervisorName”的RequiredFieldValidator。否则,应禁用所需的FieldValidator 简化代码: <asp:Repeater ID="repEmploymentHistory" runat="server" Visible="True" OnItemC

我用的是母版页和转发器。我需要实现对所需字段验证器的选择性使用。当选择“是”(即ID为“rblMayContact”的RadioButtonList中值为“0”的列表项)时,应启用(激活)ID为“rfvSupervisorName”的RequiredFieldValidator。否则,应禁用所需的FieldValidator

简化代码:

<asp:Repeater ID="repEmploymentHistory" runat="server" Visible="True" OnItemCommand="repEmploymentHistory_ItemCommand"
        OnItemDataBound="repEmploymentHistory_ItemDataBound" OnDataBinding="repEmploymentHistory_DataBinding">
        <ItemTemplate>
            <table id="tblEmploymentHistory" class="table bordered">
                <tr>
<td>
                        Supervisor Name<br />
                        <asp:Label ID="lblSupervisorName" runat="server" CssClass="underlined bold"><%# DataBinder.Eval(Container.DataItem, "SupervisorName")%></asp:Label>
                        <asp:TextBox ID="txtSupervisorName" runat="server" Visible="false" MaxLength="50"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="rfvSupervisorName" runat="server" ControlToValidate="txtSupervisorName"
                            EnableClientScript="true" ValidationGroup="EditEmploymentHistoryGroup" ErrorMessage="Required."
                            CssClass="field-validation-error" />
                        <asp:RegularExpressionValidator ID="revSupervisorName" runat="server" ControlToValidate="txtSupervisorName"
                            ValidationGroup="EditEmploymentHistoryGroup" ValidationExpression="^[-a-zA-Z'.\s]{1,50}$"
                            ErrorMessage="Enter a valid name." CssClass="field-validation-error" />
</td>
</tr>
<tr>
                    <td>
                        <asp:Label ID="lblContactQuestion" runat="server" Text="May we contact this employer? (If no, please explain)">May we contact this employer?</asp:Label>
                        <asp:Label ID="lblContactAnswer" runat="server" CssClass="underlined bold"><%#(String.IsNullOrEmpty(DataBinder.Eval(Container.DataItem, "ContactEmployer").ToString())) ? String.Empty : (bool)DataBinder.Eval(Container.DataItem, "ContactEmployer") ? "Yes" : "No" %></asp:Label>
                        <asp:RadioButtonList ID="rblMayContact" runat="server" RepeatDirection="Horizontal"
                            RepeatLayout="Flow" AutoPostBack="False" Visible="false" >
                            <asp:ListItem Value="0" onclick="ValidateSupervisor(this);return false;"> Yes </asp:ListItem>
                            <asp:ListItem Value="1"> No </asp:ListItem>
                        </asp:RadioButtonList>
                        <asp:Label ID="lblNoContactReason" runat="server" CssClass="underlined bold"><%#(String.IsNullOrEmpty(DataBinder.Eval(Container.DataItem, "ReasonNotContacting").ToString())) ? String.Empty : DataBinder.Eval(Container.DataItem, "ReasonNotContacting") %></asp:Label>
                        <asp:TextBox ID="txtNoContactReason" runat="server" MaxLength="200" Visible="false"></asp:TextBox>
                    </td>
                </tr>
 </table>
        </ItemTemplate>

主管姓名
我们可以联系这位雇主吗? 对 不
困难在于访问重复项的元素,因为每个元素都有索引前缀


因此,使用javascript或jquery,如何仅在选择特定单选按钮时启用与文本框相关的所需字段验证器?

在中继器的ItemDataBound中尝试以下方法:

protected void repEmploymentHistory_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var rblMayContact = e.Item.FindControl("rblMayContact") as RadioButtonList;
        var rfvSupervisorName = e.Item.FindControl("rfvSupervisorName") as RequiredFieldValidator;
        var revSupervisorName = e.Item.FindControl("revSupervisorName") as RegularExpressionValidator;

        if (rfvSupervisorName != null && revSupervisorName != null)
        {
            revSupervisorName.Enabled = rfvSupervisorName.Enabled = rblMayContact != null && rblMayContact.SelectedIndex >= 0;
        }
    }
}
并将RadioButtonList的“AutoPostBack”属性添加为true:

<asp:RadioButtonList runat="server" AutoPostBack="True">
    ...
</asp:RadioButtonList>

...
这样,每次更改RadioButtonList时,它都会发回页面,中继器的ItemDataBound会启用/禁用验证程序控件。

在服务器端(C#)中,您可以比javascript或jquery更轻松地做到这一点