【问题标题】:Select an autogenerated WebForm Control ID with JQuery使用 JQuery 选择自动生成的 WebForm 控件 ID
【发布时间】:2014-02-10 05:41:24
【问题描述】:

ASP.NET 会自动生成一个 ID,而不是使用我分配的 ID。我将如何使用 jQuery 选择这个值?我不相信自动生成的值总是相同的。

这是我的 ASPX 代码:

<asp:TextBox ID="txtZip" runat="server" CausesValidation="true" CssClass="short_width" MaxLength="10" />

这是生成的:

<input name="ctl00$MainContentArea$txtZip" type="text" maxlength="10" id="ctl00_MainContentArea_txtZip" class="short_width" />

这是我想要做的:

<script type="text/javascript">
    jQuery(function ($) {
        $("#txtZip").mask("99999?-9999");
    });
</script>

【问题讨论】:

    标签: c# javascript jquery asp.net webforms


    【解决方案1】:

    你可以使用类选择器:

    jQuery(function ($) {
        $(".short_width").mask("99999?-9999");
    });
    

    我会创建一个新类,即 zipCode 并将其添加到您的控件中:

    <asp:TextBox ID="txtZip" runat="server" CausesValidation="true" CssClass="short_width zipCode" MaxLength="10" />
    

    然后使用这个:

    jQuery(function ($) {
        $(".zipCode").mask("99999?-9999");
    });
    

    这样它就可以将它与其他样式分开。

    【讨论】:

    • 不幸的是,我在屏幕上还有其他带有 .short_width 样式的控件,它们不需要掩码。
    • 好答案。您会发现 .NET 想要控制所有元素 ID。你最好改用类名。您可以使用唯一的类名:CssClass="short_width zipcode"
    • 我已经更新了它,我在您发布 cmets 时添加了它。 @Diodeus 伟大的思想都一样。 :)
    【解决方案2】:

    如果您的 JavaScript 在aspx 页面中,您可以使用ClientId。否则,您将不得不使用另一个答案中的类。

    <script type="text/javascript">
        jQuery(function ($) {
            $("#<%=txtZip.ClientId%>").mask("99999?-9999");
        });
    </script>
    

    【讨论】:

    • 我在网络表单中完全忘记了这一点,否则我会将其添加到我的答案中。 +1。 :)
    • @hutchonoid 我每天都在尝试忘记网络表单。
    • 如果您使用的是 ASP.NET 4 或更高版本,可以尝试使用 ClientIDMode="Static"
    【解决方案3】:

    .Net 4.5 在控件上具有 ClientIDMode 属性,如果您将其设置为静态,则控件的 ID 不会与您分配给它的 ID 不同,它将保持为 txtZip。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 2013-01-21
      • 1970-01-01
      • 2023-03-11
      • 2011-06-15
      • 2011-12-05
      • 2014-11-19
      相关资源
      最近更新 更多