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 相关文章推荐
[原创]来自ImageSee官方 JavaScript图片浏览器
Jan 16 Javascript
js 程序执行与顺序实现详解
May 13 Javascript
jQuery中filter()方法用法实例
Jan 06 Javascript
javascript中Math.random()使用详解
Apr 15 Javascript
js模仿php中strtotime()与date()函数实现方法
Aug 11 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 Javascript
Vue之Watcher源码解析(2)
Jul 19 Javascript
分分钟学会vue中vuex的应用(入门教程)
Sep 14 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
Aug 17 Javascript
vue组件添加事件@click.native操作
Oct 30 Javascript
JS创建自定义对象的六种方法总结
Dec 15 Javascript
vue动态绑定style样式
Apr 20 Vue.js
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
PHP4之COOKIE支持详解
2006/10/09 PHP
php5 and xml示例
2006/11/22 PHP
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
Vue组件的使用教程详解
2018/01/05 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
OpenCV 模板匹配
2019/07/10 Python
pytorch 修改预训练model实例
2020/01/18 Python
Python基于yield遍历多个可迭代对象
2020/03/12 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
技术人员面试提纲
2013/11/28 职场文书
幼儿园大班新学期寄语
2014/01/18 职场文书
电子工程求职信
2014/07/17 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
小学老师对学生的评语
2014/12/29 职场文书
工作感言一句话
2015/08/01 职场文书
辞职申请书范本
2019/05/20 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
php实例化对象的实例方法
2021/11/17 PHP
Linux中sftp常用命令整理
2022/06/28 Servers