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 相关文章推荐
网页自动跳转代码收集
Sep 27 Javascript
javascript实现图片切换的幻灯片效果源代码
Dec 12 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
Aug 12 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
Feb 11 Javascript
JS使用插件cryptojs进行加密解密数据实例
May 11 Javascript
webpack4 升级迁移的实现
Sep 12 Javascript
微信jssdk逻辑在vue中的运用详解
Nov 14 Javascript
vue将后台数据时间戳转换成日期格式
Jul 31 Javascript
微信小程序通过js实现瀑布流布局详解
Aug 28 Javascript
layui.tree组件的使用以及搜索节点功能的实现
Sep 26 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
Sep 21 Javascript
js实现纯前端压缩图片
Nov 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
无数据库的详细域名查询程序PHP版(3)
2006/10/09 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
深入分析php中接口与抽象类的区别
2013/06/08 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
简单实现python画圆功能
2018/01/25 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
python实战教程之自动扫雷
2018/07/13 Python
学习Django知识点分享
2019/09/11 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
python3多线程知识点总结
2019/09/26 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
质检员岗位职责
2013/12/17 职场文书
优秀村官事迹材料
2014/01/10 职场文书
社区两委对照检查材料
2014/08/23 职场文书
学习雷锋精神倡议书
2015/04/27 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书