2013-04-26 47 views
0

我在這樣的頁面上有一個下拉列表;如何觸發下拉列表的SelectedIndexChanged事件通過點擊輸入或鼠標左鍵?

<asp:DropDownList ID="ddlCities" runat="server" 
AutoPostBack="true" ClientIDMode="Static" 
OnSelectedIndexChanged="ddlCities_SelectedIndexChanged"> 
</asp:DropDownList> 

此功能在正常狀況下正常工作。但由於客戶的行爲,我必須改變dropdownlist的行爲。

所以我的意思是,當客戶端關注下拉列表並將其移動到其他列表項時,將觸發SelectedIndexChanged事件。但我不想要這個。我想,當用戶關注下拉列表中的一個元素時,SelectedIndexChanged事件不會被觸發,並且按下輸入或鼠標左鍵事件將僅觸發SelectedIndexChanged事件。

有什麼辦法可以達到這個目的嗎?

回答

1

我認爲,如果你有jQuery的你可以這樣做客戶端。 Asp.NET Dropdownlist呈現爲HTML選擇元素。

沒有測試過這一點,但我認爲你可以防止更改事件的回傳,並觸發其上輸入鍵不放......

$("#idofselectelement").change(function(e) { 
    // This stops auto postback, so SelectedIndexChanged does not fire. 
    e.preventDefault(); 
}); 



$("#idofselectelement").keyup(function(e) { 
    //Check for enter keypress 
    if ((e.keyCode ? e.keyCode : e.which) == 13){ 
      //Simulate autopostback, this triggers SelectedIndexChanged 
      __doPostBack('idofselectelement','') }); 

    } 

在我看來,有時它更容易把這個功能放在js或jQuery代碼中,因爲你可以直接操縱控件的行爲,而且你不侷限於Asp.NET爲你提供的功能。不知道別人怎麼看這個?

編輯:沒有測試,但我認爲事件1是正確的鼠標點擊....

$("#idofselectelement").mousedown(function(event) { 
    if(event.which == 1) { 
     //Simulate autopostback, this triggers SelectedIndexChanged 
     __doPostBack('idofselectelement','')      
    } 
}); 
+0

這是一個很好的解決方案,我使用jQuery在我的項目中,我現在會嘗試並提供反饋。謝謝:) – 2013-04-26 08:56:11

+0

夥計,這個工程很好,當按下輸入。但我也需要觸發左側的mousedown點擊。怎麼樣? – 2013-04-26 09:41:12

+0

剛剛編輯我的上面的鼠標點擊左鍵。希望對你有幫助... – Jeroen1984 2013-04-26 12:03:48

相關問題