初探JQuery之AutoComplete(自動完成文字輸入)

之前常聽一些前輩在用JQuery,不過由於小弟功力不夠高深,所以還沒玩到那塊,但是後來才發現原來我天天接觸到…

相信各位也是,當我們在找資料問Google大神時,常常打一個字,底下就跑出來,這就是AutoComplete了….

這幾天在網上看到有人在教學,所以先學起來放,不過由於不熟JavaScript與JQuery,還是Try了一兩天才Try出來,AutoComplete有兩種用法,原理一樣只是取值的對象不同,一種是直接向網頁陣列取,一種則是向DB取,不多說先來個筆記記下:

基本配備:

1.當然是下載AutoComplete 套件

2.解壓縮到網頁目錄下(/var/www/html/jQuery)

以陣列取值:

1. 在

間加入:






其中main.css與thickbox.css是畫面外觀設定可以不加,但是jquery.autocomplete.css是下拉選單的式樣,可以自行設定.

2.在











加入:

請輸入:

3.最後在加上:

其中name array就是下拉選單會去比對的值.

以DataBase取值:

1.一樣引入JQuery:

間加入:






其中main.css與thickbox.css是畫面外觀設定可以不加,但是jquery.autocomplete.css是下拉選單的式樣,可以自行設定.

2. 在Body加入欄位:

請輸入:

3. 最後加上:

其中search.php代表去執行SQL的地方,撈出您要的資料做比對.

4.search寫法:

< ?
$searchText = $_GET[“q”];//接入搜尋字串
#echo $searchText;
if (!$searchText) return;//判斷是否有字串傳入

include_once(“../../../link.php”);//引入link

$mysql = “SELECT company FROM company WHERE company LIKE '$searchText%';”;//比對字串
#echo $mysql;
$query = mysql_query(“$mysql”);//執行mysql
$qcount = mysql_num_rows($query);//算總共有幾筆資料
if ($qcount > 0 ){//假設$qcount大於一執行
for ($i=1 ;$i< $qcount;$i++){ //跑幾次回圈
$qa = mysql_fetch_row($query); //撈出資料
foreach ($qa as $value){
echo $value.” “;//撈出資料
}
}
}
?>

有圖有真相:

參考資料:

1.JQuery教學-基礎篇

2.JQueryAutoComplete教學

3.JQueryAutoComplete參數

4.官網Demo

091202備註:

最近發現這個有點不太符合我的需求,因為我希望User打的字可以跟挑選出來的字比對,然後以比較明顯的顏色顯示(原本只有粗體),找很久原本以為是修改”jquery.autocomplete.css”,結果發現不是應該要修改”jquery.autocomplete.js”約莫在429行,內容:

return value.replace(new RegExp(“(?![^&;]+;)(?!< [^<>]*)(” + term.replace(/([^$()[]{}*.+?|\])/gi, “\$1”) + “)(?![^<>]*>)(?![^&;]+;)”, “gi”), “$1“);

改為

return value.replace(new RegExp(“(?![^&;]+;)(?!< [^<>]*)(” + term.replace(/([^$()[]{}*.+?|\])/gi, “\$1”) + “)(?![^<>]*>)(?![^&;]+;)”, “gi”), “$1“);

附帶一提,jquery.autocomplete.css中有這幾行:

.ac_loading {
background: white url('indicator.gif') right center no-repeat;
}

可以把Demo資料夾底下的indicator.gif拷貝到相對目錄就可以在比對時出現loading畫面.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *