使用Jquery的AutoComplete插件

本文介绍如何使用 jQuery 插件实现自动补全功能。通过整合 JSON 数据处理与前端交互,展示了从后端获取数据并呈现到输入框的全过程。

公司原来的项目想润润色,于是就想加个autocomplete功能,就上open-open看了看,找到了jquery的这个插件

使用了一下,还不错

 

插件主页:http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

 

下载了需要的JS之后,因为我返回的是json数据,所以需要把java对象转成json格式,于是去下载了个

json-lib,但是不知道怎么回事老是提示找不到 net.sf.json.Exception,就换成了JSON Tools.

条件都准备好了,开始敲代码。

 

简单一点了,写个servlet处理请求了

/**
 * 公司的东西,返回的是一个包含map的List
 * 假设这里返回了
 * result—
 *            |_map(id,username)
 *            |_map(id,username)
 *            ....
 * result 是一个ArrayList
 * /  
List result = helper.exeCustomQuery(sql);
/**
 * 调用Json tools 里的 JSONMapper.toJSON(object)方法
 * 来生成json格式的字符串,后面那个render(boolean)表是否格式化
 * 生成的json字符串
 */
String resultString = JSONMapper.toJSON(result).render(false);
/**
 * 后面设置好直接输出即可
 * /
response.setContentType("applicatioin/json; charset=UTF-8");
response.setHeader("Cache-Control", "nocache");
response.getWriter().write(jsonString);

  

下面就到js的编写了,假设这个servlet的请求路径为ajax.do

$().ready(function() {
    //NBH是input控件的ID
    //这是请求的URL地址,注意这里并没有传参数进去
    $("#NBH").autocomplete('ajax.do', {
    //这个标示是否为ajax请求,暂且这样理解,具体我也不清楚
   multiple: true,
    width:150,
    max:50,
   //这个功能我还不知道,返回到input控件的结果会加上这个,默认的是个','
  //我把它设置成了空格
  multipleSeparator: ' ',
   //解析json数据
  parse: function(data) {
	$.map(eval(data), function(row) {
		return {
		   data: row,
		   value: row.id,
                                   //这个就是返回的结果,最终显示在控件上的
	             result:row.username       
            }});
   },
   //格式化下拉框里的格式,跟返回到input控件的结果没关系
  formatItem: function(item) {
	return item.id + " <" + item.username + ">";
	}
   });
});

 

 

 代码注释里提到过,并没有传参数进去,jquery这个控件,默认会吧input控件的值用参数q传过去。也就是说你请求的是ajax.do?q='input里的当前值'

 你直接在aciton里面试用他就行了

我们的效果如下(和上面的代码没关系),速度也不错

另外还有一些不明白的地方,

return {
   data: row,
   value: row.id,//这个是什么?干什么用的?
  result:row.username

multipleSeparator: ' ',//这个是什么?除了知道它加到返回到控件的值的最后外,不知道还有什么用途

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值