2010-02-04 53 views
0

我試圖顯示數據到一個JQuery自動完成下拉菜單。該信息是從一個動態ASPX檢索:JQuery自動完成奇怪的焦點行爲

$("#<%= this.txt.ClientID %>").autocomplete('<%=this.ResolveUrl("~/Page.aspx") %>') 

很顯然,我不想讓超過必要的GET,所以我有一點與Java定時器控制(每個按鍵):

if (timerActive) { 
    stopTimer(); 
} 

timer = setTimeout('obtainItems()', 800); 
timerActive = true; 

而獲得的項目做:

$("#<%= this.txt.ClientID %>").autocomplete('<%=this.ResolveUrl("~/Page.aspx") %>') 
stopTimer(); 

這東西一般工作,但我已經看到了箭頭和AvPag一些特殊的行爲。當顯示下拉列表的記錄時,如果我按AvPag,組件會選擇正確的記錄,但兩秒後會回到上一個記錄。

我的第一個理論是,自動補全重置了焦點,但我注意到這是不正確的。我認爲這是一個錯誤(BUG LINK),但它不起作用。

請,如果有人可以幫助...非常感謝!

+0

你知道自動完成有一個選項延遲基於擊鍵的獲取? ,延遲:900 – 2010-02-04 21:27:41

回答

0

沒有計時器,它是否按預期工作?

我猜你的onkeypress事件被觸發,用戶選擇他們想要的,然後定時器事件觸發重置項目。

添加變量

var selected = false; 

所選事件附加到您自動完成和組選定=真

有你obtainItem這個樣子的:

function obtainItems() 
{ 
    if (!selected) 
    { 
     $("#<%= this.txt.ClientID %>").autocomplete('<%=this.ResolveUrl("~/Page.aspx") %>') 
     stopTimer(); 
    } 
}