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 相关文章推荐
(function(){})()的用法与优点
Mar 11 Javascript
编写高性能的JavaScript 脚本的加载与执行
Apr 19 Javascript
基于jquery的一个拖拽到指定区域内的效果
Sep 21 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
Mar 03 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
Jun 01 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
Nov 22 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
Dec 08 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
Dec 08 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
Nov 03 Javascript
jQuery 实现左右两侧菜单添加、移除功能
Jan 02 jQuery
js中的闭包学习心得
Feb 06 Javascript
ES6基础之 Promise 对象用法实例详解
Aug 22 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 新手入门教程
2009/08/03 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
js表单登陆验证示例
2016/10/19 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
跟老齐学Python之折腾一下目录
2014/10/24 Python
python中的全局变量用法分析
2015/06/09 Python
Windows下实现Python2和Python3两个版共存的方法
2015/06/12 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
Python机器学习之决策树算法
2017/12/22 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
PyQt5实现简易计算器
2020/05/30 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
绿色城市实施方案
2014/03/19 职场文书
会计学专业自荐信
2014/06/25 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
电力培训心得体会
2014/09/02 职场文书
小学毕业感言200字
2015/07/30 职场文书