1. 程式人生 > >Jquery實現自動補全功能

Jquery實現自動補全功能

   今天因為公司全去搞活動了,所以在網上看了一會兒jquery,在這裡詳細介紹一下基於jquery的autoComplete的實現。
     首先,向大家看下自己實現的最簡單的結果:
![簡單效果](https://img-blog.csdn.net/20160118171503783)
      估計和很多新手一樣,一開始沒有明白怎麼弄,不過不要緊張,慢慢來,so easy!
      第一:去下載一個jquery.autocomplete.js外掛:[官網地址](http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/)
      第二:開始寫一個.html;
![前面要引入的一些外部.js和.css](https://img-blog.csdn.net/20160118172539658)
      在body裡面只要一個輸入框即可:
<body>
    <input type="text" id="singleBirdRemote" style="width: 200px;height: 30px;"/>
</body>

接下來就是全部是jquery了。
直接附上程式碼,裡面有詳細的解釋,直接copy即可使用。

 var websites = [
        "Google","NetEase", "Sohu", "Sina", "Sogou", "Baidu", "Tencent",
        "Taobao", "Tom", "Yahoo", "JavaEye", "Csdn"
, "Alipay","北京" ]; $().ready(function() { $("#singleBirdRemote").autocomplete(websites,{ minChars:0, /*minChars表示在自動完成啟用之前填入的最小字元,這裡我們設定為0,在我們雙擊文字框,不輸入字元的時候,就會把資料顯示出來*/ max:20, /*表示列表裡的條目數,我們設定了5,所以顯示5條*/ autoFill:true, /*表示自動填充,就是在文字框中自動填充符合條件的專案*/
mustMatch:true, /*表示必須匹配條目,也就是在文字框裡輸入的內容,必須是data引數裡的資料,如果不匹配,文字框就被清空*/ matchContains:true,/*表示包含匹配,就是data引數裡的資料,是否只要包含文字框裡的資料就顯示,比如在上面的圖中, 我們輸入了“g”,由於“Sogou”中也包含一個“g”,所以會顯示出來, 如果將matchContains設為fasle,則“Sogou”就不會顯示*/ scrollHeight:220, delay:500, /*設定多少毫秒顯示資料,default:300,type:Integer*/ autoFocus:true,/*default:false*/ disabled:true, /* position: { my : "right top", at: "right bottom" },*/ formatItem: function(data, i, total) {/*格式化條目中的字型*/ return "<I>"+data[0]+"</I>"; }, formatMatch: function(data, i, total) { return data[0]; }, formatResult: function(data) { return data[0]; } /* * formatItem、formatMatch、formatResult非常有用,formatItem作用在於可以格式化列表中的條目, * 比如我們加了“I”,讓列表裡的字顯示出了斜體,formatMatch是配合formatItem使用,作用在於,由於使用了formatItem, * 所以條目中的內容有所改變,而我們要匹配的是原始的資料,所以用formatMatch做一個調整,使之匹配原始資料, * formatResult是定義最終返回的資料,比如我們還是要返回原始資料,而不是formatItem過的資料。 * */ }); });

這樣開啟你的頁面就可以了。是不是很簡單?但是這樣還不是我們想要的結果,因為都是死資料。我們需要的是從資料庫裡面取到資料直接放到頁面上。其實這個也是很簡單滴。
現在我們的model已經有了,萬事俱備,只欠data。現在我們就用ajax來獲取資料,想必很多小夥伴已經有思路了。嘿嘿,請看:

   function initAutoComplete(json){
             $("#tel").autocomplete(json , {
             minChars:1,
             width:260,
             dataType:"json",
             matchContains: true,
             formatItem: function(row, i, max) {
             return row.tel + " <" + row.name + "> ["+row.cg_name+"]";
             },
             formatMatch: function(row, i, max) {
             return row.tel;
             },
             formatResult: function(row) {
             return row.tel;
             }
             });
     }
     $(document).ready(function(){
         $("#tel").focus(function(){
         $.post(url,{},function(data){
         initAutoComplete(data);
         },"json");
         });
     }); 

以上程式碼就是實現ajax從伺服器取資料的模型了。好了,就這樣吧,要回家嘍。