Jquery實現自動補全功能
阿新 • • 發佈:2019-01-28
今天因為公司全去搞活動了,所以在網上看了一會兒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從伺服器取資料的模型了。好了,就這樣吧,要回家嘍。