2010-12-08 65 views
2

我有一个MasterPage,在其内容部分我添加了一个FORM元素。 访问该页面时,由于FORM是runat = server,所有我的控件都被重命名。 因此,当在jQuery中选择,甚至表格已被重命名为masterpage和jquery问题

我该如何解决这个问题?

感谢

回答

1

对于母版页,所有元素都将ct100__etc附加到元素的ID。这是自命名容器以来的一项功能。通常情况下,解决它的方法是使用语法,如:

$("#<%= button.ClientID %>").click(..); 

要进入较长的ID,还是要靠CSS类来标识元素。另一个技巧是用DIV HTML元素封装表单的某些部分,并为其指定一个ID作为目标。

HTH。

0

您可以使用Control.ClientID这一点。类似于

$("#<%= yourelement.ClientID %>") 
+0

我不希望它重新命名我的对象 – Himberjack 2010-12-08 12:43:45

+0

你不能做到这一点。它是一种默认行为。 – rahul 2010-12-08 12:45:11

1

你不能,这就是.Net的行为。你可以做的是调整你的jQuery使用情况,以合并你正在使用的控件的ClientID。最简单的方法是将某种翻译变量注入头部某处的脚本中。

<script language="javascript"> 
    var myControl1 = '<%=myControl1.ClientID %>'; 
</script> 

然后你可以使用myControl1作为一个字符串变量注入委托人身份证到您的jQuery通话更可读的方式。

0

您还可以创建一个的CssClass,然后由$访问( '类名')

<asp:TextBox id="tb4" Text="Hello World!" cssclass="txtboxtb4" runat="server" /> 


alert($('.txtboxtb4').val()); 
2

除了许多其他答案中提出的.ClientID方法,您可以使用jQuery的endswith选择器。

例如:选择一个ID的endsWith “身份识别码” 的元素(如ctl001_form1_myid)

$('[id$="myid"]'); 

,或者如果您使用的是.NET 4,你可以设置ClientIdMode="false"防止重命名。

0

另一种方法是将控件放在span标记中。

<span id="txt"> 
    <asp:TextBox ID="txt" runat="server"></asp:TextBox> 
</span> 

比你可以选择你这样的元素在jQuery中。

$('#txt > input').val('Hello world'); 

但我的方法是,选择与选择器结束的元素。

$('input[id$="txt"]').val('Hello world'); 

适用于我的情况。希望帮助。