当前位置: 代码迷 >> Web前端 >> 两款juqery autocomplete 运用总结
  详细解决方案

两款juqery autocomplete 运用总结

热度:727   发布时间:2013-07-08 14:13:00.0
两款juqery autocomplete 使用总结
   近日得到一个任务:调研“输入提示”js plugin,并集成到项目中去。我对jquery-ui-autocomplete 和 jquery-autocomplete 都做了简单的技术调研,发现了一些问题,有了一些心得。
   jquery-autocomplete git-address:https://github.com/devbridge/jQuery-Autocomplete
  


   该开发者出了两版,我下载的最新版,demo中是基于jquery-1.8.2.min.js的,支持最低的jquery 版本是1.27,并且仅依赖jquery核心js。这款jquery.autocomplete.js options有几个重要属性。
   1)lookupFilter 可以添加一个对source 结果过滤规则。
   2)zindex 设置自动提示div的显示层级
   3)noCache 是否缓存查询结果
   4)匹配内容在提示内容中高亮显示
   5) 双端匹配(%xxx%)
   该款autocomplete js 完美支持中文录入提示,但是 source对于非key value 数组支持不够好,例如source:['aaa','bbb','ccc'] 需要对该source重新处理成[key1:value1,key2:value2] 的数据格式。该js对同key做了覆盖处理,后面相同的key会覆盖掉前面的数据,提示匹配只会匹配后面key对应的value.
  


   jquery-ui autocomplete  url:http://jqueryui.com/autocomplete/ .
  


   该款输入提示js需依赖jquery.ui.core.js ,jquery.ui.widget.js jquery.ui.position.js 。
   1)该款自动提示plugin是基于widget ,提供基础的api ,不做赘述.
   2)匹配模式为单端匹配(%xxx)。
  
   该插件jquery-ui 1.8.16 版本的autocomplete 无法检测首次中文输入事件,无法提示自动补全内容。对于英文输入提示,没有发现任何问题。
    对于1.8.16 输入中文不触发autocomplete 接解决办法,是追加一个input事件,当listen到输入时,触发autocomplete search数据。
"blur.autocomplete",
										function(c) {
											if (!a.options.disabled) { 
											    clearTimeout(a.searching); 
											    a.closing = setTimeout(function () { 
											    a.close(c); 
											    a._change(c) 
										               }, 150) 
											} 
										}).bind('input',function (c) { 
										      a.search(a.item); 
										});




总结:jquery-autocomplete依赖较少,如果单存想添加输入提示功能,它是个不错的选择,支持cache,支持中文提示,代码体积很小,在dialog 层级较多的前提下,提示div依然不会被覆盖,这个也得意于zindex 支持。
     jquery-ui autocomplete 依赖较多,所以会引入一些不必要的代码,弹出层级较多时,zindex 无法灵活控制,默认每次输入会自动search后台数据,对server压力较多一些。,但是如果web前端是基于jquery-ui的实现,那么直接利用jquery-ui autocomplete 实现输入提示,个人认为是最合适的,因为引入其他的提示plugin,需要解决js冲突。
1 楼 代昊鑫 2 小时前  
赞一个,博主总结的很到位,在jquery-ui autocomplete的使用过程中,个人遇到的问题比较多,个人更喜欢jquery-autocomplete
  相关解决方案