2012-03-22 94 views
2

我有一個輸入字段,它使用自動完成來顯示用戶輸入的文本可能匹配的列表,並且在該字段下是另一個輸入字段。當用戶鍵入文本,然後單擊它下面的下一個字段時,自動完成下拉菜單將覆蓋該輸入字段。當字段焦點丟失時停止jQuery自動完成

我只想顯示自動完成下拉菜單,如果該字段仍然有焦點,並且當焦點丟失時將中止自動完成操作。

我的代碼是這樣的。

var inputID = "#"+model+field; 
$(inputID).autocomplete({ 
    source: autoURL, 
    delay: 0, 
    minLength: 1 
}); 

模型和字段被定義爲函數參數。

我想我可以附加一個事件來捕捉焦點的丟失,然後調用像$(inputID).abort()這樣的事件來取消自動填充。或者我可以添加一個焦點事件處理程序到它下面的字段來觸發中止。我已經嘗試過的任何工作,並且我已經查看了自動完成的代碼,並且看不到阻止它的方法。

我運行的jQuery 1.7.1和jQuery UI 1.8.18

任何幫助將是巨大的。

感謝

回答

1

the documentation,您可以撥打$(inputID).autocomplete('close');關閉自動完成。

+0

當另一個字段收到焦點時,我試着調用'$(inputID).autocomplete('close')',但它並沒有停止自動完成ajax調用。我閱讀了文檔,並將其理解爲它會在顯示後隱藏彈出窗口。我希望阻止它達到這一點。 – cgTag 2012-03-22 15:33:18

+0

如果源字段沒有焦點,我通過從打開的事件調用close來獲得它的工作。不中止ajax調用,但仍然產生我需要的結果。 – cgTag 2012-03-22 15:42:47

+0

很高興聽到它! – 2012-03-22 15:55:39