jQuery UI AutoComplete 使用说明


Posted in Javascript onJune 20, 2011

介绍
在 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); 
} 
}); 
} 
}); 
} 
);
Javascript 相关文章推荐
用document.documentElement取代document.body的原因分析
Nov 12 Javascript
Jquery Select操作方法集合脚本之家特别版
May 17 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
Jan 09 Javascript
jQuery插件实现文字无缝向上滚动效果代码
Feb 25 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
May 10 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 Javascript
JavaScript实现异步图像上传功能
Jul 12 Javascript
小程序页面动态配置实现方法
Feb 05 Javascript
JS实现获取数组中最大值或最小值功能示例
Mar 02 Javascript
微信小程序实现时间进度条功能
Nov 17 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
Jan 14 Javascript
在vue中使用console.log无效的解决
Aug 09 Javascript
jQuery 源码分析笔记(3) Deferred机制
Jun 19 #Javascript
jQuery 源码分析笔记(7) Queue
Jun 19 #Javascript
jQuery 源码分析笔记(5) jQuery.support
Jun 19 #Javascript
jQuery调用WebService的实现代码
Jun 19 #Javascript
非常棒的10款jQuery 幻灯片插件
Jun 14 #Javascript
在jquery中处理带有命名空间的XML数据
Jun 13 #Javascript
jquery 与NVelocity 产生冲突的解决方法
Jun 13 #Javascript
You might like
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
php 函数使用方法与函数定义方法
2010/05/09 PHP
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
php通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
详解Python中的条件判断语句
2015/05/14 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Django内容增加富文本功能的实例
2017/10/17 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
局域网标准
2016/09/10 面试题
如何定义一个可复用的服务
2014/09/30 面试题
美发店5.1活动方案
2014/01/24 职场文书
十八届三中全会感言
2014/03/10 职场文书
食品安全承诺书
2014/05/22 职场文书
海洋科学专业求职信
2014/08/10 职场文书
村班子对照检查材料
2014/08/18 职场文书
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript
关于对TypeScript泛型参数的默认值理解
2022/07/15 Javascript