【问题标题】:How do I get around asp.net automatically generating IDs when I'm using jquery that needs the IDs?当我使用需要 ID 的 jquery 时,如何绕过 asp.net 自动生成 ID?
【发布时间】:2011-10-21 18:20:05
【问题描述】:

我正在使用 jquery 流行的 Validate 插件来验证我的所有字段。当输入字段没有在服务器上运行并且因此没有重命名输入的所有 ID 和名称时,这非常有用。

我想知道是否有其他方法可以在 jquery 中选择输入,以便我仍然可以使用该插件。 jquery如下:

<script type="text/javascript">
jQuery.validator.messages.required = "";
$(document).ready(function () {
    $('#form1').validate({
        rules: {
            firstName: {
                required: true,
            },
        }
    });
});

目前,如果我使用 &lt;asp:TextBox.../&gt;,则 ID 出现在“ContentPlaceHolderBody_firstName”中,名称出现在“ctl00$ContentPlaceHolderBody$firstName”中。

我什至尝试替换 jquery 中的名称以反映 ID 和名称均无济于事。

解决这个问题的最佳方法是什么?我可以添加一个类并选择那种方式吗?如果是这样,jquery 选择器会是什么样子?

任何帮助表示赞赏!谢谢!

【问题讨论】:

  • 您使用的是什么版本的 ASP.NET?

标签: jquery asp.net validation jquery-validate


【解决方案1】:

您可以编写一些内联的服务器端代码,例如:

$('#form1').validate({
        rules: {
            <%= txtFirstName.ClientID %>: {
                required: true,
            },
        }
    });

【讨论】:

    【解决方案2】:
    【解决方案3】:

    将 ClientIDMode 属性设置为静态

    http://msdn.microsoft.com/en-us/library/1d04y8ss.aspx

    【讨论】:

      【解决方案4】:

      一个类的 jquery 选择器是 $(".classname)

      【讨论】:

      • $('.classname') - 缺少引号
      【解决方案5】:

      .net 4.0 中,您可以设置ClientIDMode="static" 并具有可预测的控制ID

      例如

      <asp:Label ID="Label1" runat="server" ClientIDMode="static" />
      

      在 javascript 方面,您可以拥有自己选择的 id

      $("#Label1").hide();
      

      【讨论】:

        【解决方案6】:

        向您的 asp 控件添加一个类,然后选择该类而不是 ID

        【讨论】:

          猜你喜欢
          • 2019-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-11
          • 1970-01-01
          • 2017-08-25
          • 1970-01-01
          • 2011-01-11
          相关资源
          最近更新 更多