即時通訊使用組合框爲我的應用程序中的功能,我有AutoCompleteMode =「建議」。ASP.NET AJAX工具包Combobox:避免需要點擊ENTER兩次以回發
但是,我輸入搜索的文本框後,我需要按兩次回車,並顯示一些結果。這是默認行爲,如oficial demonstration中所示。 在我看來,它有點煩人,不直觀...
任何人都有線索如何避免這種行爲,並只按一次?
在此先感謝
即時通訊使用組合框爲我的應用程序中的功能,我有AutoCompleteMode =「建議」。ASP.NET AJAX工具包Combobox:避免需要點擊ENTER兩次以回發
但是,我輸入搜索的文本框後,我需要按兩次回車,並顯示一些結果。這是默認行爲,如oficial demonstration中所示。 在我看來,它有點煩人,不直觀...
任何人都有線索如何避免這種行爲,並只按一次?
在此先感謝
更改控制true
的AutoPostback
屬性。這將陷入標籤鍵,這是因爲控制失去焦點。
我懷疑是否有一個很好的方法來捕捉這個輸入鍵,除非你打算打開源代碼並進行一些修改。
<ajaxToolkit:ComboBox ID="ComboBox1" runat="server"
AutoPostBack="True"
DropDownStyle="DropDownList"
AutoCompleteMode="SuggestAppend"
CaseSensitive="False"
CssClass=""
ItemInsertLocation="Append" ... >
我面臨同樣的問題,解決了這個問題:
您必須設置AutoPostBack屬性爲「假」,如果你不想被點擊兩次按鈕。
湯姆,楊是對的,它發生在我之前。你只需要將你的autopostback設置爲false。所以,可能你需要將ComboBox autopostback設置爲false。
我設法解決這個問題,下面的代碼:
在你的aspx文件,ComboBox控件將是:
<ajaxToolkit:ComboBox ID="cbCountries" CssClass="AquaStyle2" runat="server" AutoPostBack="true" DropDownStyle="DropDownList"
AutoCompleteMode="SuggestAppend" CaseSensitive="False" ItemInsertLocation="Append" onkeydown="FireEnterKey(this, event)" />
然後,添加引用的JavaScript文件,並添加有以下功能:
function FireEnterKey(elem, evt) {
var keyCode = evt ? (evt.which ? evt.which : evt.keyCode) : event.keyCode;
if (keyCode != 13)
return;
var belem = $get(elem.attributes.id.value + "_Button"); //ctl00_ContentPlaceHolder1_cbCountries_Button
var telem = $get(elem.attributes.id.value + "_TextBox"); //ctl00_ContentPlaceHolder1_cbCountries_TextBox
if (navigator.userAgent.search("Firefox") >= 0) {
elem.onchange();
}
else if (navigator.userAgent.search("MSIE") >= 0) {
elem.onchange();
telem.blur();
}
else { // Opera, Safari, Chrome
telem.blur();
}
}
我希望我的代碼能夠回答你的問題。
不幸的是,我已經嘗試過,並沒有工作。我曾嘗試過其他房產,但也沒有成功。 – 2009-11-18 02:46:47
如果AutoPostBack = true,Tab鍵在演示中起作用。大多數不知道這些的人只需點擊提交按鈕。 – 2009-11-18 02:50:34