jQuery.Autocomplete 中文支持
插件地址:http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
插件下载地址:http://jquery.bassistance.de/autocomplete/jquery.autocomplete.zip
jQuery.Autocomplete是jquery的流行插件,能够很好的实现输入框的自动完成(autocomplete)、建议提示(input suggest)功能,支持ajax数据加载。
但唯一遗憾的是,在对中文输入法打开时,firefox3.0中是对中文拼音的自动匹配,而对输入后的中文无法及时触发匹配;而在我的IE6.0下,则无此问题。
原因分析:
Autocomplete插件对用户输入字符的触发自动匹配是通过”keydown”事件进行的(可分析jquery.autocomplete.js 第92行),在IE6中,当输入法打开时,输入的字符是不会触发”keydown”的,只有中文输入完毕才触发之,所以中文输入和latin文没有区别的;但在firefox3.0下,无论输入法打开否,按键都会触发”keydown”事件,所以造成中文输入完毕,自动匹配的是刚才打出的部分中文拼音字母。
修改前:
Js代码
$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event)
$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event)
修改后:
Js代码
$input.bind(($.browser.opera ? "keypress" : "keyup") + ".autocomplete", function(event)
$input.bind(($.browser.opera ? "keypress" : "keyup") + ".autocomplete", function(event)
解决方法:
网上查到的最多做法是修改jquery.autocomplete.js 第92行,将”keydown”替换为”keyup”,但这个不是根本办法,虽然这样改后可在firefox中及时对输入的中文进行自动匹配,但将原插件中回车、tab等重要的事件机制破坏了,比如这样改后,如果你的input是在一个form里的话,回车从原来的将选定项输入到input中变为了直接提交form表单了,这并不是我们想要的。
我的方法原理是,补充一个原插件触发查询的事件,就是当input输入栏发生字符变化时,重新进行查询(调用其内部的onChange函数),这里主要针对firefox而言,因为我们的系统访问最多的是IE和firefox。而恰好firefox有一个input变化的事件就是oninput,那么我们只要在原jquery.autocomplete.js第199行,插入如下代码:
Js代码
.bind("input", function() {
// @hack by liqt:support for inputing chinese characters in firefox
onChange(0, true);
});
.bind("input", function() {
// @hack by liqt:support for inputing chinese characters in firefox
onChange(0, true);
});添加后变为:
Js代码
.bind("unautocomplete", function() {
select.unbind();
$input.unbind();
$(input.form).unbind(".autocomplete").bind("input", function() {
// @hack by liqt:support for inputing chinese characters in firefox
onChange(0, true);
});
});
分享到:
相关推荐
。
。
jQuery.autocomplete 是jquery的流行插件,,能够很好的实现输入框的自动完成(autocomplete)、建议提示(input suggest)功能,支持ajax数据加载。
基于.net和Jquery.autocomplete插件 做的智能匹配下拉框,可选择可输入,采用json数据格式,支持汉字、拼音和拼音首字母进行智能匹配。 使用说明: 1、如果想不做任何修改直接看效果,请在本地创建一张名为tb_Manage...
jQuery.Autocomplete 是jquery的流行插件,能够很好的实现输入框的自动完成(autocomplete)、建议提示(input suggest)功能,支持ajax数据加载。
jquery.AutoComplete.js中文修正版(支持firefox),注意是修正了输入中文的一些bug,需要的朋友可以测试下。
autoComplete 自动补全 支持中文补全 中间字查询
autocomplete自己运用到了,自己根据网上资源,总结了一下。支持中文。
jqueryd的autoComplete插件,输入自动补全 支持中文补全
jquery autocomplete.js 是一款优秀的开源JS,支持自动完成,不过如果是中文失效。原因是由于中文编码不一致引起的,修改源文件中AJAX请求中的编码,加上escape编码后,在后台用Server.URLDecode解码后,则中文也...
jquery+json自动完成完整实例(修改版) 兼容各大浏览器,支持中文
jquery autocomplete 动态补全例子支持中文 ajax传递json数据 文件里有json数据拼接
NULL 博文链接:https://axl234.iteye.com/blog/1673411
2、下载jquery autocomplete插件或者直接使用我附件里提供的文件,自己下载下来的文件需要修改一些内容才能支持向上/向下选择文字、解决中文乱码,其中解决中文乱的问题网上有提到过,就是把文件中的encodeURI改成...
jquery搜索自动提示下拉框插件autocomplete-有我自己做的例子-支持中文
jQuery ui autocomplete 组件扩展代码利用 String.prototype.localeCompare 来取汉字的声母。如果浏览器不支持此API,可以在source中传一个sm来指定声母。##可选扩展中文不合适把source的value作为展示结果。这里...
jquery-easyui的combobox火狐下不支持中文匹配,修改了一下,增加了input事件监听,现已支持火狐下中文