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 相关文章推荐
一句话JavaScript表单验证代码
Aug 02 Javascript
jQuery 选择器理解
Mar 16 Javascript
在jquery中combobox多选的不兼容问题总结
Dec 24 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
May 14 Javascript
php,js,css字符串截取的办法集锦
Sep 26 Javascript
加载列表时jquery获取ul中第一个li的属性
Nov 02 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
Mar 29 Javascript
vue.js加载新的内容(实例代码)
Jun 01 Javascript
解决vue路由后界面没有变化,但是链接有的问题
Sep 01 Javascript
在vue中使用setInterval的方法示例
Apr 16 Javascript
vue spa应用中的路由缓存问题与解决方案
May 31 Javascript
基于Layui自定义模块的使用方法详解
Sep 14 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
一个odbc连mssql分页的类
2006/10/09 PHP
mysql总结之explain
2012/02/27 PHP
apache mysql php 源码编译使用方法
2012/05/03 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
在vue中获取dom元素内容的方法
2017/07/10 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
微信小程序实现动态获取元素宽高的方法分析
2018/12/10 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
vue-autoui自匹配webapi的UI控件的实现
2020/03/20 Javascript
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
python如何将多个PDF进行合并
2019/08/13 Python
scrapy结合selenium解析动态页面的实现
2020/09/28 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
2013年研究生毕业感言
2014/02/06 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python