使用jQuery Autocomplete(自動完成)插件


 

jQuery 的Autocomplete(自動完成、自動填充)插件有不少,但比較下來我感覺,還是bassistance.de 的比較強大,我們就來寫一些代碼感受一下。

最簡單的Autocomplete(自動完成)代碼片段

1
2
3
4
5
6
7
8
9
<script type="text/javascript">
var websites = [
	"Google","NetEase", "Sohu", "Sina", "Sogou", "Baidu", "Tencent", 
	"Taobao", "Tom", "Yahoo", "JavaEye", "Csdn", "Alipay"
];
$().ready(function() {
	$("#website").autocomplete(websites);	
});
</script>
1
2
3
4
5
6
<p>
<label>Web Site:</label>
<input type="text" id="website" />
<input type="button" id="getvalue" value="Get Value" />
</p>
<div id="content"></div>

我們可以看到效果

jQuery Autocomplete Plugin

這么幾行代碼就完成了自動完成功能,真實太強了,不過bassistance.de的jQuery Autocomplete插件還有更豐富的功能,它的文檔在http://docs.jquery.com/Plugins/Autocomplete ,在API Documentation里,我們要仔細的研究一下autocomplete( url or data, [options] )方法。

autocomplete方法有兩個參數,第一個用來填寫URL地址或是數據,jQuery Autocomplete插件是支持Ajax方式調用數據,所以可以填寫調用的地址,另外可以直接填寫數據,格式為JavaScript數組,如我們的例子,autocomplete的另外一個參數 [options]是一個可選項,我們在例子中就沒有寫,但這個參數里面卻有很多可配置的參數,我們還是先修改上面的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$().ready(function() {
	$("#website").autocomplete(websites,{
		minChars: 0,
		max: 5,
		autoFill: true,
		mustMatch: true,
		matchContains: true,
		scrollHeight: 220,
		formatItem: function(data, i, total) {
			return "<I>"+data[0]+"</I>";
		},
		formatMatch: function(data, i, total) {
			return data[0];
		},
		formatResult: function(data) {
			return data[0];
		}
	});
});

在options項我們增加了好幾個參數

minChars表示在自動完成激活之前填入的最小字符,這里我們設置為0,在我們雙擊文本框,不輸入字符的時候,就會把數據顯示出來,效果如下

jquery-autocomplete-21

max表示列表里的條目數,我們設置了5,所以顯示5條,也如上圖

autoFill表示自動填充,就是在文本框中自動填充符合條件的項目,看下圖,在我們輸入“g”的時候,文本框里填充了“google”

jQuery Autocomplete Plugin

mustMatch表示必須匹配條目,也就是在文本框里輸入的內容,必須是data參數里的數據,如果不匹配,文本框就被清空

matchContains表示包含匹配,就是data參數里的數據,是否只要包含文本框里的數據就顯示,比如在上面的圖中,我們輸入了“g”,由於“Sogou”中也包含一個“g”,所以會顯示出來,如果將matchContains設為fasle,則“Sogou”就不會顯示

scrollHeight不用多解釋,看文檔就知道。

后面3個參數formatItem、formatMatch、formatResult非常有用,formatItem作用在於可以格式化列表中的條目,比如我們加了“I”,讓列表里的字顯示出了斜體,formatMatch是配合formatItem使用,作用在於,由於使用了formatItem,所以條目中的內容有所改變,而我們要匹配的是原始的數據,所以用formatMatch做一個調整,使之匹配原始數據,formatResult是定義最終返回的數據,比如我們還是要返回原始數據,而不是formatItem過的數據。

[options]里還有很多有用的參數,大家可以看它的文檔。

jQuery Autocomplete插件里還有兩個重要的方法,一個是result( handler ),一個是search( ),比如用戶在選定了某個條目時需要觸發一些別的方法時,着兩個方法就可以起作用了,我們再修改以上的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$().ready(function() {
 
	function findValueCallback(event, data, formatted) {
		$("#content").html("<strong>"+(!data ? "No match!" : "Selected: " + formatted)+"</strong>");
	}
 
	$("#website").autocomplete(websites,{
		minChars: 0,
		max: 5,
		autoFill: true,
		mustMatch: true,
		matchContains: true,
		scrollHeight: 220,
		formatItem: function(data, i, total) {
			return "<I>"+data[0]+"</I>";
		},
		formatMatch: function(data, i, total) {
			return data[0];
		},
		formatResult: function(data) {
			return data[0];
		}
	});
	$("#website").result(findValueCallback);
	$("#getvalue").click(function() {$("#website").search()});
});

看看是什么效果,會在content div的地方顯示出我們選擇的內容。

jQuery Autocomplete插件所帶的例子還是很好的,大家可以仔細研究一下它的例子,更加靈活的運用jQuery Autocomplete插件。

 

PS:附加一點界面上的模糊搜索功能:

 

// 模糊搜索

$("#blurQueryCond_value").keyup(function() {

$("#cacheInstanceList_body tr").hide();

var $d = $("#cacheInstanceList_body tr").filter(":contains('" + $.trim($("#blurQueryCond_value").val()) + "')");

$d.show();

}

);

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM