jQuery實現使用者輸入自動完成功能
利用jQuery UI中Auto-complete外掛實現輸入自動完成功能,大家在使用諸如淘寶、京東等電商平臺搜尋商品時,往往只要輸入商品的一些特殊字元,就可以顯示出和該字元相近的列表選單,使用者使用滑鼠或者鍵盤方向鍵就可以快速選擇,實現了很好的使用者體驗。
1.最簡單的使用者輸入自動完成
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Autocomplete - Default functionality</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script>
$(function() {
//定義並初始化字典庫資料來源集合
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
//自動完成外掛函式
$( "#tags" ).autocomplete({
//自動完成字典庫資料來源
source: availableTags
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="tags">請輸入: </label>
<input id="tags">
</div>
</body>
</html>
2 使用遠端資料來源自動完成
Auto-complete外掛不光可以實現本地資料來源的自動完成,也可以讀取遠端的資料來源,列如實現從伺服器端讀取資料來源資訊。
通過將伺服器資料快取到瀏覽器中,獲取的資料來源首先儲存在cache變數中。
$(function() {
//自定義快取變數
var cache = {};
//自動完成外掛函式
$("#tags").autocomplete({
//定義使用者最少輸入的字元數
minLenght: 2,
source: function(request, response){//定義遠端獲取資料來源函式
var term = request.term;//定義使用者請求資訊變數
if(term in cache) {//判斷請求資料是否存在快取中
response(cache[term]);//真,從快取中讀取資料
return;
}
$.getJSON('data.json', request, function(data, Status, xhr) {
cache[term] = data.result;//快取遠端資料
response(data.result);
});
}
});
});