2012-11-01 111 views
0

我有一個名爲「ddlCaseFiles」的DropDownList。 然後我有一個腳本,我導入包含jQuery .change()函數來捕獲事件。然後我有3個單選按鈕將dropDownList排序。當加載默認單選按鈕時,事件觸發。但只要我選擇另一個單選按鈕,則該事件不會再發出。jQuery .change()只會觸發一次

這裏是我的DropDownList:

<asp:DropDownList runat="server" ID="ddlCaseFiles" DataSourceID="dsMyCaseFiles" 
DataTextField="Display" DataValueField="FileID" OnPreRender="ddl_PreRender" /> 

,這裏是我的jQuery .change():

$('#ddlCaseFiles').change(function() { 
    debugger; 
    $('#lblNextExhibitNumber').text(''); 
    var temp = $(this).val(); 
}); 

這裏是什麼樣的單選按鈕做剪斷:

protected void rbByFileName_CheckedChanged(object sender, EventArgs e) 
{ 
    ddlCaseFiles.DataSourceID = "dsCaseFilesReverse"; 
    ddlCaseFiles.DataTextField = "Display"; 
    ddlCaseFiles.DataValueField = "FileID"; 
} 

protected void rbByFileID_CheckedChanged(object sender, EventArgs e) 
{ 
    ddlCaseFiles.DataSourceID = "dsCaseFiles"; 
    ddlCaseFiles.DataTextField = "Display"; 
    ddlCaseFiles.DataValueField = "FileID"; 
} 

我從來沒有使用.change()之前。因此,也許我缺少一些東西

+0

你能顯示HTML列表嗎? –

+0

嘗試點擊(或點擊)事件。 – alfred

+0

即使我點擊下拉列表,它也不會捕獲任何東西,因爲它會觸發。我正在嘗試捕獲selectedValue。但通過jquery – john

回答

7

看起來像單選按鈕的CheckedChanged事件不會觸發下拉更改事件。當選擇的下拉列表更改時,JS更改事件觸發。當您更改DataSourceID時,這不一定發生,是嗎?

我不知道如何在ASP中觸發這個。也許ddlCaseFiles.SelectedIndexChanged()

否則,你可以單擊事件處理程序添加到電臺:

$('input[type="radio"].someCssClass').click(function(){ 
    $('#ddlCaseFiles').trigger('change'); 
}); 

編輯:

這只是一種猜測,但它看起來像CheckedChanged可能被修改<select>元素在頁面上。例如,每次DataSourceID更改時是否會重新插入?

嘗試使用.on()功能改變你的下拉更改事件處理程序是這樣的:

$('body').on('change', '#ddlCaseFiles', function() { 
    debugger; 
    $('#lblNextExhibitNumber').text(''); 
    var temp = $(this).val(); 
}); 

注:爲更好的性能變化$('body')一些容器接近下拉。

.change()函數將change處理程序附加到頁面上的元素。如果ASP刪除一個元素並在稍後重新添加它,那麼處理程序不見了。

即使刪除元素,使用.on()函數附加的處理函數仍然存在。 Read more here.

+0

中,但不是每次更改我的選擇時都會觸發JS事件?單選按鈕僅更改fileID的排序。我還是要從列表中選一個 – john

+1

啊,對。你能夠發佈無線電改變事件處理程序的ASP生成的JS嗎?看起來ASP似乎在下降。 – jfrej

+0

我會看看並在主要問題 – john