冠军

导航

< 2025年3月 >
23 24 25 26 27 28 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 27 28 29
30 31 1 2 3 4 5

统计

使用 jQuery UI AutoComplete

介绍

在 jQuery UI 的最近更新中增加了自动完成控件 AutoComplete,这为我们提供了又一个强大的开发工具,这里介绍一下这个控件的使用方式。
首先,jQuery UI 是基于 jQuery 的,所以,必须在你的页面中首先引用 jQuery 脚本库,然后再引用 jQuery UI 库,对于 jQuery UI 库来说,可以引用整个的库,也可以仅仅引用当前页面用到的库。
jQuery UI 的下载地址:http://jqueryui.com/download

一.基本配置

一般来说,引用独立的脚本可以减小页面的尺寸,我们这里使用独立的脚本。对于 autocomplete 来说,涉及到下面的几个脚本文件。
<script src="jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="jquery.ui.core.js"></script>
<script src="jquery.ui.widget.js"></script>
<script src="jquery.ui.position.js"></script>
<script src="jquery.ui.autocomplete.js"></script>
页面中当然要有一个输入框.
<div class="demo">
    <div class="ui-widget">
        <label for="tags">
            Tags:
        </label>
        <input id="tags" type="text">
    </div>
</div>
 

二. 使用本地数据

 
对于使用来说,基本的使用非常简单,提示的数据可以来自数组。通过参数对象的 source  属性设置数据源。
复制代码
<script type="text/javascript">
$(
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
});
});
</script>
复制代码
现在,一个自动完成的效果已经可以工作了。
 

三.使用远程数据源

还可以为 source 属性设置一个表示远程地址的字符串,通过这个远程地址来获取 json 数据。
对于 autocomplete 来说,当提供一个地址的时候,在用户开始在输入框中输入时,将会向这个地址发出一个 GET 请求,请求中的参数名为 term 的参数表示当前输入的内容,
返回的结果必须是 json 格式的数据。
JSON 的详细说明参加这里:http://www.json.org/json-zh.html
 
var url = "serviceHandler.ashx";

$(
"#auto").autocomplete(
{
source: url
}
);
 
我们可以通过一个一般处理程序来返回数据。需要特别注意的是,返回的串必须符合 JSON 格式要求,字符串必须使用双引号
 
复制代码
public class serviceHandler : IHttpHandler {

public void ProcessRequest (HttpContext context) {
context.Response.ContentType
= "text/plain";

HttpResponse response
= context.Response;
System.IO.TextWriter writer
= response.Output;

// 注意,必须是标准的 JSON 格式串,必须使用双引号
writer.Write("[\"One\", \"Two\", \"Three\"]");

}

public bool IsReusable {
get {
return false;
}
}

}
复制代码
 
通常在使用远程数据的时候,我们希望在用户输入几个字符之后,再进行提示,这可以通过 minLength 属性来设置,如果是本地数据源,通常为 0, 对于远程数据源,或者大量数据的情况,应当适当增加这个值。这样,我们的脚本就成为了下面的样子了。
复制代码
var url = "serviceHandler.ashx";

$(
"#auto").autocomplete(
{
source: url,
minLength:
2

}
);
复制代码

四. 带有缓存的远程数据源

通过为 source 提供一个函数,我们可以为远程数据增加一个本地的缓存。这样就不必每次都到服务器中进行查询。
复制代码
$(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);
}
});
}
});
}
);
复制代码


posted on   冠军  阅读(6228)  评论(1编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示