工作中涉及到 需要带有输入提示的功能(如google 搜索提示那样)网上找了一些资料,最好选定jquery autocomplete 来实现,下面介绍一下使用已经,项目中遇到的一写问题
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<%String root=request.getContextPath();%>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" src="<%=root%>/js/jquery.js"></script>
<script type='text/javascript' src='<%=root%>/js/jquery.autocomplete.js'></script>
<link rel="stylesheet" type="text/css" href="<%=root%>/js/jquery.autocomplete.css" />
</head>
<script type="text/javascript">
$().ready(function() {
function parseFn(data) {
var rows = [];
for(var i=0; i<data.length; i++){
rows[rows.length] = {
data:data[i], //下拉框显示数据格式
value:data[i].name, //选定后实际数据格式
result:data[i].name //选定后输入框显示数据格式
};
}
return rows;
}
//var myJSONObject =[{"id":"1","name":"bj"},{"id":"2","name":"sh"},{"id":"3","name":"天津"},{"id":"4","name":"重庆"},{"id":"5","name":"广州"},{"id":"6","name":"深圳"},{"id":"7","name":"南京"},{"id":"8","name":"济南"},{"id":"9","name":"杭州"},{"id":"10","name":"苏州"}];
var myJSONObject =[{"id":"ak540","name":"zhangliang2"},{"id":"akc696","name":"zhangliang"}];
$("#suggest3").autocomplete('autoComplete.jsp', {
multiple: true,
autoFill: true,
mustMatch :true,
matchContains: true,
//extraParams:{q:function(){return $("#this").val();}},
dataType: 'json',
parse:parseFn,
formatItem: function(row,i,max) {
return row.name;
},
formatMatch: function(row,i,max){
return row.name;
},
formatResult: function(row,i,max){
return row.name;
}
// }).result(function(event, item, formatted) {//把返回的结果内容显示在其他文本框上
// $("#ortherid").val(item.name);
});
});
</script>
<body>
<label>Multiple Cities (local):</label>
<textarea id='suggest3' cols='40' rows='3'></textarea>
<div id="ortherid"></div>
</body>
</html>
这里主要是用到了jquery.autocomplete.js 里面的$("#suggest3").autocomplete 方法(这方面的资料比较多,具体可以网上搜索,我也是参考官方例子改写的官方网的DEMO 地址:http://jquery.bassistance.de/autocomplete/demo/
主要从后台返回的结果是以JSON 的数据格式返回的
autoComplete.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="com.autoComplete.*"%>
<%
City city = new City();
String query =request.getParameter("q");
//query= new String(query.getBytes("ISO-8859-1"), "UTF-8");
String json=city.toJoson(query);
response.setContentType("application/json;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
try {
PrintWriter out2 = response.getWriter();
out2.write(json);
} catch (IOException e) {
e.printStackTrace();
}
%>
后台JAVA 代码
City
package com.autoComplete;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.sf.json.JSONArray;
/***********************************************************************
*
* City.java
* @copyright Copyright: 2009-2012
* @creator 周辉<br/>
* @create-time 2010-8-5 上午11:18:58
* @revision $Id: *
***********************************************************************/
public class City {
/**
*
* @return
*/
public List<CityBean> getCity() {
List<CityBean> list = new ArrayList<CityBean>();
CityBean cityBean = new CityBean();
cityBean.setId("1");
cityBean.setName("bj");
list.add(cityBean);
CityBean cityBean1 = new CityBean();
cityBean1.setId("2");
cityBean1.setName("sh");
list.add(cityBean1);
CityBean cityBean2 = new CityBean();
cityBean2.setId("3");
cityBean2.setName("天津");
list.add(cityBean2);
CityBean cityBean3 = new CityBean();
cityBean3.setId("4");
cityBean3.setName("重庆");
list.add(cityBean3);
CityBean cityBean4 = new CityBean();
cityBean4.setId("5");
cityBean4.setName("广州");
list.add(cityBean4);
CityBean cityBean5 = new CityBean();
cityBean5.setId("6");
cityBean5.setName("深圳");
list.add(cityBean5);
CityBean cityBean6 = new CityBean();
cityBean6.setId("7");
cityBean6.setName("南京");
list.add(cityBean6);
CityBean cityBean7 = new CityBean();
cityBean7.setId("8");
cityBean7.setName("济南");
list.add(cityBean7);
CityBean cityBean8 = new CityBean();
cityBean8.setId("9");
cityBean8.setName("杭州");
list.add(cityBean8);
CityBean cityBean9 = new CityBean();
cityBean9.setId("10");
cityBean9.setName("苏州");
list.add(cityBean9);
return list;
}
public String toJoson(String query) {
List<CityBean> list = getCity();
List<CityBean> list2 = search(query, list);
//JsonConfig jsonConfig = new JsonConfig();
JSONArray jsonArray = JSONArray.fromObject(list2);
String json = jsonArray.toString();
return json;
}
public List<CityBean> search(String name, List<CityBean> list) {
List<CityBean> results = new ArrayList<CityBean>();
Pattern pattern = Pattern.compile(name, Pattern.CASE_INSENSITIVE);
for (int i = 0; i < list.size(); i++) {
Matcher matcher = pattern.matcher(((CityBean) list.get(i))
.getName());
if (matcher.find()) {
results.add(list.get(i));
}
}
return results;
}
}
CityBean 在这里就不贴了
运行效果
我这里项目中需要多列 所以用了multiple: true, 这个属性,如下效果
这里我发现这个控件一写问题:
1
比如第二个记录南京,前面会有一个空格
(有兴趣的朋友可以仔细跑一下发现这个问题,后面第二 第三个 以及后续的数据都会有空格,用SPLIT 分割取得数据的时候一定要注意TRIM了)
2
下面运行提示后用鼠标点击或者回车选中响应 鼠标和回车事件(没有问题)
IE下面firefox 只能用回车选中,用鼠标选中后,数据会乱如下效果
(官网的DEMO也有类似问题):
写好DEMO 觉的挺容易的马上移植项目中,结果又遇到不少的问题
1 系统中用了prototype.js 在加入jquery.js 页面效果出不来,后来找到问题了prototype.js 和jquery.js冲突
官网下载的jquery.js 是1.2.6版本的,网上有说法改写jquery 的$结果没搞定,后来升级jquery.js 1.4.2 问题解决
2我们系统中用了sitemesh 做装饰,页面头尾都不需要关心的,autoComplete.jsp 返回的结果不是JSON 后又给装饰后加了头尾HTML 数据流了,这样autoComplete控件就无效了
一定要确定在服务端返回的数据流最终
是JSON 格式数据
总结:项目中往往和简单的DEMO 在运行环境和其他。。又不同的地方,需要具体问题具体分析解决之
- 大小: 6.5 KB
- 大小: 6.3 KB
- 大小: 4.5 KB
分享到:
相关推荐
**jQuery的Autocomplete插件**是用于实现网页输入框自动补全功能的一种高效解决方案,它极大地提升了用户体验,尤其是在用户需要从大量数据中选择时。这个插件是基于jQuery库的,因此,首先需要确保在项目中引入了...
在标题"jQuery自动完成插件autocomplete.zip"中,我们了解到这是一个基于jQuery库的插件,主要功能是实现自动完成效果。描述中提到的zip文件包含的是该插件的核心组件。 jQuery库是JavaScript的一个轻量级框架,它...
在这个实例中,我们将探讨如何在ASP.NET中使用jQuery插件实现AutoComplete功能,这是一种常见的输入提示技术,可以提升用户输入效率。 AutoComplete通常用于TextBox控件,当用户在输入框中键入文字时,系统会根据已...
**jQuery Autocomplete插件详解** 在前端开发中,jQuery库为我们提供了丰富的功能和简便的API,使得网页交互变得更加便捷。而jQuery Autocomplete插件则是一个非常实用的工具,它能够帮助用户在输入框中实现自动...
接下来,我们将深入探讨jQuery Autocomplete插件的使用方法、配置选项、事件和数据源。 **1. 安装与引入** 首先,确保已经安装了jQuery和jQuery UI库。如果你还没有,可以通过CDN链接或者下载到本地项目中。引入所...
在压缩包中的 `jquery.autocomplete使用方法.txt` 文件,应该包含了详细的使用示例和代码解释,你可以参考这个文件来了解如何在实际项目中应用 AutoComplete 插件。 ### 6. 扩展功能 jQuery AutoComplete 还支持...
jQuery plugin for autocomplete - jQuery自动完成插件
jQuery Autocomplete 是一个非常实用的插件,它为网页表单输入框提供了自动补全功能,极大地提升了用户体验。这个压缩包“jquery autocomplete下载.rar”包含了实现这一功能所需的基本文件,包括样式表、HTML 模板、...
`jQuery-autocomplete` 是一个基于 jQuery 的开源插件,用于实现自动补全功能。这个插件使得在网页表单输入框中快速、高效地提供下拉建议变得简单易行,提高了用户界面的交互性和用户体验。它广泛应用于搜索引擎、...
**jQuery Autocomplete.js 插件使用详解** jQuery Autocomplete.js 是一个非常实用的插件,它为HTML输入框提供了自动补全功能,极大地提升了用户体验。这个插件基于jQuery库,结合Ajax技术,能够实时从服务器获取...
`jquery.autocomplete.js`是jQuery的一个插件,它扩展了原生的jQuery库,增加了自动完成的功能。这个插件主要由两个核心部分组成:一个是前端展示部分,负责渲染和展示联想结果;另一个是数据处理部分,用于获取和...
1. **jQuery库**:jQuery是一个广泛使用的JavaScript库,简化了DOM操作、事件处理、动画效果和Ajax交互。在这个项目中,jQuery提供了基础框架,使得实现自动补全功能更为简便。 2. **自动完成(Autocomplete)**:...
《jQuery Autocomplete 插件参数使用详解》 在Web开发中,为了提升用户体验,自动填充(Autocomplete)功能被广泛应用于搜索框、表单输入等场景。jQuery库提供了一个强大的Autocomplete插件,名为jQuery UI ...
在本篇讨论中,我们将深入理解jQuery的Autocomplete插件,以及如何在实际项目中应用。 ### 1. jQuery UI Autocomplete jQuery UI库提供了Autocomplete组件,它是基于jQuery核心功能构建的。要使用这个组件,首先...
它可能包含了对原始Autocomplete插件的扩展函数,如`_create`、`_renderMenu`等方法的重写,以及添加了滚动事件的监听和处理。 总的来说,实现jQuery UI Autocomplete的无限滚动扩展是一项涉及前端数据加载策略、...
jQuery plugin: Autocomplete 参数及实例 官网:jQuery plugin: Autocomplete 此插件依赖于 jquery 1.2.6 --- jquery 1.8.3 转自:http://www.cnblogs.com/duanhuajian/p/3398904.html
**jQuery AutoComplete 使用详解** jQuery AutoComplete 是一个非常流行的 jQuery 插件,它为输入框提供了自动补全功能,能够极大地提升用户体验。这个插件基于 jQuery 库,因此需要先引入 jQuery 才能使用。在本文...
在写一个输入框提示内容的功能时,找到了jQuery autocomplete自动补齐这个插件,如获至宝,但是从网上下载后自己用起来总是出问题,原来他只匹配jQuery1.7以下的版本,但是我的其他插件要用jQuery3的版本,这时候就...
首先,使用jQuery AutoComplete插件前,你需要引入必要的文件。这包括jQuery核心库、AutoComplete插件的JavaScript文件以及对应的CSS样式文件。这些文件可以从jQuery官方网站下载。在HTML中,你需要添加以下引用: ...
jQuery AutoComplete 是一个非常流行的 jQuery 插件,它为输入框提供了自动补全的功能,广泛应用于网页表单、搜索框等场景,以提高用户体验。这个插件允许开发者从本地数组或通过异步方式从服务器获取数据,实现动态...