asp.net:如何使用javascript或jquery访问中继器生成的元素
asp.net: How to access repeater generated elements using javascript or jquery?
我正在使用母版页和中继器。我需要实现对所需字段验证器的选择性使用。当选择"是"时(即ID为"rblMayContact"的RadioButtonList的值为"0"的ListItem,然后并且只有在那时,ID为"rfvSupervisorName"的RequiredFieldValidator才应该启用(活动)。否则,应禁用所需的字段验证器。
简化代码:
<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会启用/禁用Validator控件。
相关文章:
- 获取中继器控件ASP.Net中显示的单击项目文本框
- 需要在量角器中找到使用ng中继器的li元素的数量
- 如何在中继器中找到标头控制
- 让ASP.NET中继器设置一个动态名称
- 如何在使用Protractor测试时找到ng中继器的最后一个元素
- 如何在AnglujarJS ng中继器中选择特定元素
- 具有多个值的AngularJS滤波器中继器
- 量角器-如何从中继器而不是元素中获得实际值
- 中继器控件内的 IF 条件
- ng中继器打印结果0;当我运行函数时
- 如何在ng中继器运行中执行功能
- 修改asp.net中继器中的嵌入超链接
- 使用 jquery 动画幻灯片使用角度中继器切换
- .toggle() 适用于 ACF 中继器中的所有内容
- 通过javascript访问中继器中的asp元素
- 从量角器中的复杂中继器访问元素
- 如何在 JavaScript 中访问中继器标签值
- asp.net:如何使用javascript或jquery访问中继器生成的元素
- 可以't访问中继器中的“自动完成”文本框
- 使用JavaScript访问中继器值