如何使用 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 名称。