基于jquery的自动完成插件jquery.autocomplete.js

项目需要一个自动完成功能的text,要求实时从服务端获取符合条件的数据。

想到jquery貌似有类似功能的插件:

1.需要下面几个文件:jquery-1.3.2.js,jquery.autocomplete.js,jquery.autocomplete.css。

2.功能要求:随着输入的内容不同不断匹配符合条件的数据项,这就要求动态获取参数。而jquery传递参数可以用:

extraParams: {area:function(){return $('#id').val();}}

不过经过使用发现,这样不能动态获取参数,所以修改了一下jquery.autocomplete.js的源码为其添加了一个onBegin属性:

(1) 为$.Autocompleter.defaults添加一个属性:onBegin: null,大约在400行;

(2)调用方法:

$("#id").autocomplete(url, { mustMatch: false, //是否完全匹配 width: 220, //宽度 max: 10, //最大显示行数 onBegin: function(options) { var va= $("#id").val(); if (va&& va!= "") options.extraParams.va=va; return options; }, parse: function(data) { var par=eval(data); var re=[]; if(par!=null&&par!='undfined'){ for(var i=0;i<par.length;i++){ re[i]={data:par[i],value:par[i],result:par[i]};//data是数据项,value是值,result是显示项,例如如果数据项为A,那value可以是A.id,result是A.text。 } return re; }else{ return []; } }, formatItem: function(item) { return item; } });

 

(3)后台方法:

public void ajaxQuery(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String va= request.getParameter("va"); //长度超过5位开始查询 if (va!= null && va.length() >= 5) { response.setContentType("text/html; charset=GBK"); PrintWriter out = response.getWriter(); List list = queryService.ajaxQuery(va); String retValue = "["; for (int i = 0; i < list.size(); i++) { retValue += retValue.length() > 1 ? ",'" + list.get(i) + "'": "'" + list.get(i) + "'"; } if (retValue.length() > 1) { out.print(retValue + "]"); } out.flush(); out.close(); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值