近日得到一个任务:调研“输入提示”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