You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery获取ASP.NET控件匹配相似ID的问题及替代方案咨询

问题解答

这是完全正常的现象!你用的[id*='txtVat']是jQuery的包含型属性选择器,它会选中所有ID里包含"txtVat"字符串的元素——txtVatRate的ID里刚好包含"txtVat"前缀,所以自然会被一起选中。

如果你不想用#txtVat选择器(毕竟ContentPlaceHolder会让ASP.NET生成带前缀的客户端ID,直接写#会找不到),可以试试下面几种靠谱的方法:

  • 使用结尾匹配的属性选择器
    因为ASP.NET生成的客户端ID通常是[ContentPlaceHolderID]_[你的控件ID]格式,控件ID会作为结尾部分,所以用[id$='txtVat']就能精确匹配到ID以"txtVat"结尾的元素,完美避开txtVatRate:

    var vat = $("[id$='txtVat']");
    
  • 给控件添加CSS类
    这种方法更直观也更易维护,直接给目标ASP.NET控件加上CssClass属性:

    <asp:TextBox ID="txtVat" runat="server" CssClass="vat-textbox"/>
    <asp:TextBox ID="txtVatRate" runat="server" />
    

    然后用类选择器就能精准选中:

    var vat = $(".vat-textbox");
    
  • 利用ClientIDMode(ASP.NET 4.0+)
    如果你能控制控件的ClientIDMode,可以设置为Static,这样ASP.NET就不会修改客户端ID,控件的客户端ID会和你设置的ID完全一致:

    <asp:TextBox ID="txtVat" runat="server" ClientIDMode="Static"/>
    

    这时候你甚至可以用#txtVat选择器,或者用精确属性匹配[id='txtVat'],不过要注意页面内不能有重复ID哦。

内容的提问来源于stack exchange,提问作者Danny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:14:39