2011-11-15 35 views
2

我試圖讓jQuery自動完成實例在文本框焦點上打開,並從遠程源獲取數據。我嘗試的近似值如下所示:jQueryUI自動完成:觸發文本框焦點

http://jsfiddle.net/Ug2aG/1/

這樣做的問題是,當你從下拉一個值,你會注意到的文本框焦點方法的額外調用。我無法想出一種方法來阻止這種額外的呼叫,因爲它正在干擾功能。

有沒有更好的方法來做我想達到的目標?

+0

我在FF8或Chrome中看不到問題 –

+0

您的意思是如果文本框多次聚焦,「獲取值」文本多次出現? – heisthedon

+0

@Hery是的,沒錯。 '獲取價值'不應多次觸發 –

回答

6

這裏有一個解決方案,這不是太哈克:

$('#tags').focus(function() { 
    /* Only search if the autocomplete menu is hidden: */ 
    if ($("ul.ui-autocomplete").is(":hidden")) { 
     $(this).autocomplete('search', ''); 
    } 
}); 

更新例如:http://jsfiddle.net/9x3hu/

如果你好奇,here's the line這會導致你的悲傷。看起來像你選擇一個項目後,窗口小部件定位的input會自動聚焦。

這看起來很奇怪,但它可能與使用UPDOWN箭頭來導航下拉列表有關。在這種情況下,您需要重點回到input

+0

嘿安德魯,謝謝,這解決了這個問題! –

0

是因爲你用追加..

試試這個:

$('#status').html('<br />getting values...'); 
+0

對不起,我想我沒有正確說明 - 問題不是「獲取值」顯示兩次。問題是自動完成的源方法被調用兩次。該消息只是爲了幫助追蹤這一點。編輯:換句話說,嘗試單擊文本框並從下拉列表中選擇一個值 - 焦點方法將再次觸發。 –

+0

在chromre和ie9中看不到問題。 – heisthedon

+0

你用什麼瀏覽器來測試? – heisthedon