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 相关文章推荐
SwfUpload在IE10上不出现上传按钮的解决方法
Jun 25 Javascript
javascript用函数实现对象的方法
May 14 Javascript
javascript实现日期按月份加减
May 15 Javascript
javascript基础知识分享之类与函数化
Feb 13 Javascript
jQuery简单实现遍历单选框的方法
Mar 06 Javascript
基于Bootstrap表单验证功能
Nov 17 Javascript
vue动态改变背景图片demo分享
Sep 13 Javascript
vue实现添加与删除图书功能
Oct 07 Javascript
vue实现动态按钮功能
May 13 Javascript
JavaScript实现滚动加载更多
Dec 27 Javascript
多种类型jQuery网页验证码插件代码实例
Jan 09 jQuery
基于angular实现树形二级表格
Oct 16 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
Terran热键控制
2020/03/14 星际争霸
php摘要生成函数(无乱码)
2012/02/04 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2011/09/13 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
理解JavaScript的变量的入门教程
2015/07/07 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
用NodeJS实现批量查询地理位置的经纬度接口
2016/08/16 NodeJs
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
element ui table 增加筛选的方法示例
2018/11/02 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
详解vue 组件
2020/06/11 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
香港礼品网站:GiftU eshop
2017/09/01 全球购物
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
体现团队精神的口号
2014/06/06 职场文书
真诚的求职信
2014/07/04 职场文书
效能风暴心得体会
2014/09/04 职场文书