最近用了一下Jquery.AutoComplete.js这个Jquery插件,效果还很不错,不过它有一些对中文支持的BUG,可能是因为作者没有考虑到,我这里做一些修正;

你用它去实现的时候会发现当你打字的时候就在开始提交了,原因是因为它是用的 keydown 事件,而当我们要打中文时会输入一系列的字母,所以会出现这种 现象。解决办法,将 Keydown 事件改成 Keyup ,看起来好像是不行哦,不过它的确是可以的。我猜想可能是浏览器没有把输入法在输入字母时的 Keyup 提交到 input 框上面。

另外它还有一处,是编码的问题,今天同事在用的时候找了好久才解决。
jQuery.AutoComplete.js默认是将提交的数据用 encodeURI 转换了一下的,也就是转成 UTF-8后再escape,这样做会在GB2312编码的页面上出错,提交上去的会变乱码。
解决方法是:查找 encodeURI 共有两处,改成 escape 虽然不写 escape都是可以,但建议还是写上,以前就遇到过不用它会有乱码的情况.

源文件下载地址:http://files.cnblogs.com/huacn/jquery.autocomplete.1.1.2.js





posted on 2007-12-11 18:08 李华顺 阅读(1431) 评论(6)  编辑 收藏 所属分类: Javascript & Ajax

  回复  引用  查看    
2007-12-11 22:53 | (心)Shing Ye      
这个插件也在学习当中...
  回复  引用    
2008-07-05 18:54 | cocowool [未注册用户]
/* CAPXOUS AutoComplete, version 1.3.0
* (c) http://capxous.com <support@capxous.com>
/*----------------------------------------------------*/
你的插件和这个是一家吗,我用着也有中文的问题,但是却搜不到你说的encodeuri
  回复  引用  查看    
2008-07-07 17:52 | 李华顺      
  回复  引用    
2008-07-22 13:55 | hunny [未注册用户]
keypress->keyup
  回复  引用    
2008-08-10 09:44 | wyt [未注册用户]
lz有没有demo可以看看?我试了用keyup,在输入法里好像也没有响应。。。
  回复  引用    
2008-08-28 14:48 | yaqy [未注册用户]
$input.bind(($.browser.opera ? "keypress" : "keyup") + ".autocomplete", function(event) {
在第92行,如上,改成keyup就可以了,博主真强啊

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-12-11 18:14 编辑过
成果网帮您增加网站收入


相关链接: