6th
NOV

可以解决中文输入的自动完成jQuery脚本插件-James

Posted by JCLee under 技术

为了实现谷歌、百度、淘宝一样的自动提示的功能,这几天测量了很JavaScript的自动完成脚本。发现网上的方案超级多,之前我也收集了一篇文章《33个JavaScript自动完成脚本》,我也从中找了很多测试,发现英文都没有问题,效果都很棒。但是……,遇到了中文就全挂。写的这里想到了一个网友的话“做前端的真是不容易,要和浏览器斗,还要和输入法斗,更要和变态的用户斗”。说的很实在,我这次除了没有遇到变态用户,其他的全遇到了。

我看从33个一个感觉最棒的Tokenizing Autocomplete Text Entry

<效果>

把我需要的数据Json很的搭建好,配置很简单,很快就可以用了,英文很正常,输入中文后就没有反应。网上搜索了一下,发现有人也遇到过,说把keydown改成keyup。测试固然好用了,但只是在IE下。火狐FF下照样不好用。我断定keyup在FF下不被接受。搜索后,发现是真的。虽然有也有方法解决《jQuery捕捉中文输入法事件 (firefox下keyup无效)》,但我测试没有成功。
而且也感觉不理想,因为各浏览器对这些keydown、keyup、keypress有效性各不相同。所以我放弃了,希望通过定时器来触发Search这个动作。
我就继续查找,终于被我找到了,James,也是一款jQuery插件。他有很多的参数和实现方法。其中就有我最希望用的方法定时器。如1000ms触发一次。
James的demo可以看一下这里
James配置清单
1,keydelay表示按扭延迟时间,默认为300
2,minlength表示输入文本长度最小值,默认为3
3,method表示提交方法,默认为get,可选get和post
4,varname表示提交变量名,默认为input_content,用于处理文件获取变量,如上:$_GET['input_content']
5,params表示参数,默认为空

个人修改增加了close功能,可以将显示出的层关闭。下载地址 [".li_james_close"为“Close”的样式,大家可以自己修改。]

另建议大家focus事件进行触发,不然一载入页面就触发,就定时扫描了。虽然不是服务器端,还是会造成客户端压力的。

如:

$(document).ready(function() {
$(“#searchkey”).focus(function(){
$(“#searchkey”).james(“search.php”);?>”, {
minlength: 1,
method: “post”,
varname: “q”,
keydelay: 300
});
});
});

猜测您可以感兴趣的内容:

Leave a Reply


Spam Protection by WP-SpamFree