2012-12-14 61 views
4
<asp:RadioButton ID="myButton" Text="Option" GroupName="group" runat="server" /> 

爲什麼在這種情況下javascript函數調用$find('<%= myButton.ClientID %>')返回null?我需要檢測/更改客戶端JavaScript中的值。 $find()應該是Sys.Application.findComponent()的快捷方式。

更新:ID沒有問題,我試圖在$ chrome控制檯中找到()實際呈現的id並仍然爲null。我想獲得Ajax控件,而不是DOM元素。

+0

你說的是什麼庫? jQuery或ASP.Net ajax庫? –

+0

我前面的回答會幫助你 http://stackoverflow.com/questions/12402823/difference-between-ddl-id-ddl-id/12402942#12402942 –

+1

@fanosek,一個'的'服務器標籤將產生一個DOM元素,而不是一個組件,除非你有一個擴展器連接到它。在這種情況下,您應該將擴展器的行爲ID傳遞給'$ find()',而不是元素的id(它們並不總是相同)。 –

回答

0

您可以directly評估元素由其id和你做not需要使用find,你只需要id選擇器作爲id是唯一的html元素。

$(function(){ 
    var myButton = $('#<%= myButton.ClientID %>'); 
    alert(myButton.id); 

    //with javascript 
    myButton = document.getElementById('#<%= myButton.ClientID %>'); 
}); 
0

你確定你的DOM準備好了,當你試圖獲取組件?

嘗試是這樣的:

window.onload = function() { 
    alert($find('myButton')); 
} 
2

您需要設置的ClientIDMode爲靜態如果沒有它的多個實例:

<asp:RadioButton ClientIDMode="static" ID="myButton" Text="Option" GroupName="group" runat="server" /> 

OR

您需要使用ClientID訪問找到你的按鈕。但腳本必須位於同一頁面上。

var radioButton = $('#<%= myButton.ClientID %>'); 
+0

'$ find()'是ASP.NET AJAX庫的一部分,而不是jQuery。 –

0

$find()嘗試從其行爲ID中找到ASP.NET AJAX組件。

既然你正在尋找一個DOM元素,而不是一個組成部分,你應該使用$get()代替:

var yourButton = $get("<%= myButton.ClientID %>");