輕鬆實現相似百度輸入框聯想功能:javascript
autocomplete 是一個很厲害的插件,該插件基於jquery,在jquery官網能下載到最新版本。 首先,jQuery UI 是基於 jQuery 的,因此,必須在你的頁面中首先引用 jQuery 腳本庫,而後再引用 jQuery UI 庫,對於 jQuery UI 庫來講,能夠引用整個的庫,也能夠僅僅引用當前頁面用到的庫。 使用autocomplete 時能夠直接引入如下文件:css
或直接引入聚合文件:java
demo Html:jquery
<input id="autocomplete" type="text" />
javascript:json
//本地數據 $(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" ]; // 這裏使用數組做爲數據源,availableTags 是數組的名稱 $("#tags").autocomplete({ source: availableTags }); }); /*************遠程數據***************/ $("#autocomplete").autocomplete({ source: function (request, response) { $.post("服務端地址",{ q: $("#autocomplete").val(), d: new Date().getTime(), r: Math.random() }, function(data) { var redate = data.redate; if (!data.result) redate = [{ Name: "無數據", Id: "-1" }]; response($.map(redate, function (item) { return { label: item.Name, value: item.Name, id:item.Id }; })); }); }, minLength: 1, select: function (event, ui) { alert("id=" + ui.item.id); } });
//服務端大體以下,返回json數據:數組
public JsonResult GetDevelopersByKeyWord(string q) { var list = bll.GetUserList(q); return Json(new { result = list.Any(), redate = list }, JsonRequestBehavior.AllowGet); }
/***********帶有緩存的遠程數據源(每次請求獲取相同的數據)****************/ $(function () { var url = "serviceHandler.ashx"; var cache = {}, lastXhr; $("#auto").autocomplete({ minLength: 2, source: function (request, response) { var term = request.term; if (term in cache) { response(cache[term]); return; } lastXhr = $.getJSON(url, request, function (data, status, xhr) { cache[term] = data; if (xhr === lastXhr) { response(data); } }); } }); } );