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 相关文章推荐
JS IE和FF兼容性问题汇总
Feb 09 Javascript
jQuery点击后一组图片左右滑动的实现代码
Aug 16 Javascript
JQueryEasyUI datagrid框架的基本使用
Apr 08 Javascript
IE浏览器中图片onload事件无效的解决方法
Apr 29 Javascript
jQuery实现的调整表格行tr上下顺序
Jan 10 Javascript
JavaScript编码风格指南(中文版)
Aug 26 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
Dec 13 Javascript
详解JavaScript 中 if / if...else...替换方式
Jul 15 Javascript
layui从数据库中获取复选框的值并默认选中方法
Aug 15 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 Javascript
angular实现input输入监听的示例
Aug 31 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
Sep 25 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
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
python 排列组合之itertools
2013/03/20 Python
python迭代器实例简析
2014/09/25 Python
Python开发的实用计算器完整实例
2017/05/10 Python
python实现朴素贝叶斯算法
2018/11/19 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
什么是唯一索引
2015/07/05 面试题
烹调加工管理制度
2014/02/04 职场文书
师德师风建设方案
2014/05/08 职场文书
大四毕业生自荐书
2014/07/05 职场文书
先进党支部事迹材料
2014/12/24 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
Python基于百度AI实现抓取表情包
2021/06/27 Python
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server