最近用这个JQuery的自动完成控件出现了很多意想不到的问题,API相关的就不在这里多说了,相信网上一搜一大把。就说几点我遇到的问题吧。
1.关于去缓存
由于jQuery 的autocomplete默认带有缓存机制来降低客户端向服务端的持续多次访问请求,可以说这个处理确实是非常不错的,能够一定程度上降低服务器的压力,对一些实时性要求不是那么高或者变动不大的数据时非常有效的。
2.关于动态传参
由于这个autocomplete是通过事件触发(默认是双击或者keydown)的,在autocomplete事件中根本无法动态获取到页面上的参数值,它获取到的也只是页面初始加载时候的值,完全是事与愿违,对于初次使用者一定是非常费解,楼主也是纠结了好久,最后发现原来是有API的(- -!!!)
3.关于中文匹配
我大中华民族创造力不太行,破解啊、山寨啊什么的真是无解,网上也很多,楼主就在这里赘述一下,只需要修改一点jquery.complete.js源码就行了,第91行keydown改为keyup即可。
1.关于去缓存
由于jQuery 的autocomplete默认带有缓存机制来降低客户端向服务端的持续多次访问请求,可以说这个处理确实是非常不错的,能够一定程度上降低服务器的压力,对一些实时性要求不是那么高或者变动不大的数据时非常有效的。
但我这边的需求是autocomplete的展示需要联动页面上的另一控件的值,所以此时我就需要实时去请求服务器获取数据,因此缓存就必须去除掉,看API就会很清楚,设置cacheLength字段。但是楼主在网上搜了太多的API,相信大多数都是这样写的
cacheLength (Number):
缓存的长度.即对从数据库中取到的结果集要缓存多少条记录.设成1(这里是不对的)为不缓存.Default: 10
但是,经过楼主的实践,这个是不对的,只有把cacheLength
设置为0才能真正做到去除缓存。
2.关于动态传参
由于这个autocomplete是通过事件触发(默认是双击或者keydown)的,在autocomplete事件中根本无法动态获取到页面上的参数值,它获取到的也只是页面初始加载时候的值,完全是事与愿违,对于初次使用者一定是非常费解,楼主也是纠结了好久,最后发现原来是有API的(- -!!!)
extraParams:{
accountType:function(){return $('#accountType').combobox('getValue');}
},
这样的方式就能把你需要动态传递的参数带上了,是不是很简单呢,楼主调的时候都快疯了。。。
3.关于中文匹配
我大中华民族创造力不太行,破解啊、山寨啊什么的真是无解,网上也很多,楼主就在这里赘述一下,只需要修改一点jquery.complete.js源码就行了,第91行keydown改为keyup即可。