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'); 

適用於我的情況。希望幫助。