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 相关文章推荐
幻宇的层模拟窗口效果-提供演示和下载
Jan 20 Javascript
DOM 基本方法
Jul 18 Javascript
修改好的jquery滚动字幕效果实现代码
Jun 22 Javascript
2014 年最热门的21款JavaScript框架推荐
Dec 25 Javascript
jQuery图片轮播插件——前端开发必看
May 31 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
Dec 31 Javascript
VueJs路由跳转——vue-router的使用详解
Jan 10 Javascript
Angular2开发——组件规划篇
Mar 28 Javascript
JS动态添加的div点击跳转到另一页面实现代码
Sep 30 Javascript
Nuxt.js之自动路由原理的实现方法
Nov 21 Javascript
Node.js 在本地生成日志文件的方法
Feb 07 Javascript
基于ant design日期控件使用_仅月份的操作
Oct 27 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生成sitemap.xml地图函数
2013/11/13 PHP
php常用文件操作函数汇总
2014/11/22 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
探究Laravel使用env函数读取环境变量为null的问题
2016/12/06 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
两种方法实现在HTML页面加载完毕后运行某个js
2014/06/16 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
vue里面使用mui的弹出日期选择插件实例
2018/09/16 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
2020/06/05 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
python使用wxpython开发简单记事本的方法
2015/05/20 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
应届医学毕业生求职信分享
2013/12/02 职场文书
咖啡店自主创业商业计划书
2014/01/22 职场文书
大型晚会策划方案
2014/02/06 职场文书
给小学生的新年寄语
2014/04/04 职场文书
初中班主任评语大全
2014/04/24 职场文书
大学同学聚会感言
2015/07/30 职场文书
学校运动会开幕词
2016/03/03 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python