2009-05-29 99 views
4

當我單擊文本框而不輸入任何內容時,如何使用JQuery實現自動完成功能。 String []將返回預建列表。JQuery自動完成文本框

+1

這是否表示您已經自動完成您的打字工作?如果沒有,這個問題似乎很奇怪,因爲打字是典型的自動完成功能的重要組成部分。 – 2009-05-29 17:05:19

+0

聽起來你可能正在尋找一個組合框,你可以從列表中選擇或添加一個新的項目?對John來說,自動完成的本質是它*完成了*部分存在的事情。 – 2009-05-29 19:12:05

回答

2
<pre>'<input type="text"/><div class=displayPanel></div>'</pre> 

$ JQ( '輸入')。綁定( '點擊',函數(){

$ JQ( 'displayPanel ')。了slideDown(' 慢',函數(){

this.text = textarray;

});

});

我不知道這是你需要的但是。

2

自動完成插件(http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/)是您最好的選擇,尤其是當您處於AJAXy應用程序中時,因爲它會關閉您的服務器並實時獲取可能的列表。

實例應用:

$("#sometextbox").autocomplete("search.php", { 
    width: 260, 
    selectFirst: false 
}); 

然後search.php中可能會返回:

Great Bittern|Botaurus stellaris 
Little Bittern|Ixobrychus minutus 
American Bittern|Botaurus lentiginosus 

可以動態地生成的輸出也一樣,因爲插件通過文字上的查詢字符串輸入的,在'q'參數。

在回答射擊自動完成,而無需輸入任何內容,插件不支持,但它會相當簡單的hackish的方式實現:

插件鉤到的keydown(或按鍵)的情況下,中,像這樣(非縮小的代碼的92線):

$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete",...) 

因此,你可能會迫使autocompleter通過執行類似運行:

$("#autocompletedInput").click(function() { 
    $(this).trigger(($.browser.opera ? "keypress" : "keydown") + ".autocomplete"); 
} 

其中應該開火事件。您可能需要將隨機字符鍵碼傳遞給觸發器,所以它不會懷疑發生了什麼。