如何使用 JQuery 访问 Repeater 中的 DIV 元素
How to Access DIV element inside Repeater using JQuery
所以我有一个带有文本框的 ASP.NET 转发器控件和一个带有隐藏验证文本的 div。我正在尝试根据是否在文本框中输入特殊字符来显示此 div。我已经设法在所有文本框中应用 jquery 正则表达式,但我试图弄清楚如何将验证错误应用于用户输入输入的文本框行,因为我想要错误div 在此特定行上显示消息。我可以让它在第一行工作,但由于转发器在 HTML 中创建了它自己的控件 ID,我想知道如何去做。这是我的代码:
$(function(){
$('[id*=txtbox1]').keyup(function()
{
var Input = $(this).val();
re = /[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\/]/gi;
var SplChar = re.test(Input);
if(SplChar)
{
var replchar = Input.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\/]/gi, '');
$(this).val(replchar);
$('#ErrorDiv').show();
}
});});
<asp:Repeater ID="rptItems" runat="server">
<ItemTemplate>
<asp:textbox ID="txtbox1" runat="server" Text='<%# Eval("Questions") %>' />
<div id="ErrorDiv" style="display: none;">No special characters</div>
</ItemTemplate>
有什么建议吗?感谢帮助。
像这样将 class 添加到您的文本框 html
<asp:textbox ID="txtbox1" class="question" runat="server" Text='<%# Eval("Questions") %>' />
所以你可以替换
$('[id*=txtbox1]').keyup(function() ...
至此
$(".question").keyup(function() ...
而这个 #ErrorDiv
将不起作用.. 因为 ID 必须是唯一的,并且您的中继器将创建多个具有相同 ID 的 div。所以将 id="ErrorDiv"
更改为 class="errorDiv"
.
错误
$('#ErrorDiv').show();
正确
// $('#ErrorDiv').show();
$(this).next(".errorDiv").show();
您遇到的问题是因为 textbox-id 是唯一的。所以唯一的解决方案是 Select 元素使用 getElementsByName
或它们的 class
名称。
所以我有一个带有文本框的 ASP.NET 转发器控件和一个带有隐藏验证文本的 div。我正在尝试根据是否在文本框中输入特殊字符来显示此 div。我已经设法在所有文本框中应用 jquery 正则表达式,但我试图弄清楚如何将验证错误应用于用户输入输入的文本框行,因为我想要错误div 在此特定行上显示消息。我可以让它在第一行工作,但由于转发器在 HTML 中创建了它自己的控件 ID,我想知道如何去做。这是我的代码:
$(function(){
$('[id*=txtbox1]').keyup(function()
{
var Input = $(this).val();
re = /[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\/]/gi;
var SplChar = re.test(Input);
if(SplChar)
{
var replchar = Input.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\/]/gi, '');
$(this).val(replchar);
$('#ErrorDiv').show();
}
});});
<asp:Repeater ID="rptItems" runat="server">
<ItemTemplate>
<asp:textbox ID="txtbox1" runat="server" Text='<%# Eval("Questions") %>' />
<div id="ErrorDiv" style="display: none;">No special characters</div>
</ItemTemplate>
有什么建议吗?感谢帮助。
像这样将 class 添加到您的文本框 html
<asp:textbox ID="txtbox1" class="question" runat="server" Text='<%# Eval("Questions") %>' />
所以你可以替换
$('[id*=txtbox1]').keyup(function() ...
至此
$(".question").keyup(function() ...
而这个 #ErrorDiv
将不起作用.. 因为 ID 必须是唯一的,并且您的中继器将创建多个具有相同 ID 的 div。所以将 id="ErrorDiv"
更改为 class="errorDiv"
.
错误
$('#ErrorDiv').show();
正确
// $('#ErrorDiv').show();
$(this).next(".errorDiv").show();
您遇到的问题是因为 textbox-id 是唯一的。所以唯一的解决方案是 Select 元素使用 getElementsByName
或它们的 class
名称。