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 相关文章推荐
基于jquery的一个OutlookBar类,动态创建导航条
Nov 19 Javascript
jQuery的deferred对象使用详解
Aug 20 Javascript
js控制页面控件隐藏显示的两种方法介绍
Oct 09 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
Jun 10 Javascript
js实现TAB切换对应不同颜色的代码
Aug 31 Javascript
Angular.js中$apply()和$digest()的深入理解
Oct 13 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
Nov 16 Javascript
微信小程序 动态绑定事件并实现事件修改样式
Apr 13 Javascript
基于Vue实现页面切换左右滑动效果
Jun 29 Javascript
微信小程序左滑动显示菜单功能的实现
Jun 14 Javascript
layui获取选中行数据的实例讲解
Aug 19 Javascript
JavaScript 如何在浏览器中使用摄像头
Dec 02 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
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
使用python加密自己的密码
2015/08/04 Python
Python中struct模块对字节流/二进制流的操作教程
2017/01/21 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
2019/06/21 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
办公文员的工作岗位职责
2013/11/12 职场文书
养殖行业的创业计划书
2014/01/05 职场文书
单身联谊活动方案
2014/01/29 职场文书
见习报告怎么写
2014/10/31 职场文书
公司租车协议书
2015/01/29 职场文书
结婚十年感言
2015/07/31 职场文书