2011-08-24 25 views
0

我有這樣的jQuery UI的網站http://jqueryui.com/demos/autocomplete/#comboboxjQuery的自動完成功能力變化是使用jQuery提交

$("#mycombobox").combobox(); 

這基本上是一個輸入文本框,菜單和按鈕組合框例如自動完成文本框。

問題出在aspx頁面上我有mycombobox上面有一個asp:按鈕,當輸入按下時提交表單。

在組合框中

$(<input>) 
.autocomplete(...) 
.keydown(function (e) { 
    var keyCode = e.keyCode || e.which; 
    if (keyCode == 13 || keyCode == 108) { 
     $(this).blur(); 
     return false; 
    } 
    return true; 
}) 

的keydown是我阻止其提交的哈克的方式,但它只能得到它的一半。我希望您第一次按Enter鍵以調用自動填充的更改事件,並在第二次輸入時按下表單可以提交。

沒有keydown hack,更改仍然在自動完成上調用,但直到調用提交後才使用舊值。我寧願不這樣做,找到更好的方法。

編輯
如果選擇的東西它有正確的行爲,我怎麼能手動選擇第一個選項時,將顯示菜單嗎?

回答

0

你可以檢查,看看是否自動完成用戶界面是可見的處理什麼按下Enter鍵會做

$('.ui-autocomplete').is(':visible') 
+0

那難道不工作100%的時間,雖然會,何時會是concidered可見? –

+0

如果沒有選定的項目可能需要輸入以提交,則爲true,因此如果除了可見檢查之外還有一個項目被選中,就可以添加一個檢查項目,如$('。ui-autocomplete')。 .is(':visible')&& $('#ui-active-menuitem')。length> 0' – MikeM

+0

確定即時消息有一半,我編輯了這個問題 –