欢迎您访问我爱IT技术网,今天小编为你分享的javascript教程:【jQuery.autocomplete 支持中文输入(firefox)修正方法】,下面是详细的讲解!
jQuery.autocomplete 支持中文输入(firefox)修正方法
但唯一遗憾的是,在对中文输入法打开时,firefox3.0中是对中文拼音的自动匹配,而对输入后的中文无法及时触发匹配;而在我的IE6.0下,则无此问题。
原因分析:
Autocomplete插件对用户输入字符的触发自动匹配是通过”keydown”事件进行的(可分析jquery.autocomplete.js第 92行),在IE6中,当输入法打开时,输入的字符是不会触发”keydown”的,只有中文输入完毕才触发之,所以中文输入和latin文没有区别的;但在firefox3.0下,无论输入法打开否,按键都会触发”keydown”事件,所以造成中文输入完毕,自动匹配的是刚才打出的部分中文拼音字母。------所以只有Firefox有问题。
解决方法:
网上查到的最多做法是修改jquery.autocomplete.js第92行,将”keydown”替换为”keyup”,但这个不是根本办法,虽然这样改后可在firefox中及时对输入的中文进行自动匹配,但将原插件中回车、tab等重要的事件机制破坏了,比如这样改后,如果你的input是在一个form里的话,回车从原来的将选定项输入到input中变为了直接提交form表单了,这并不是我们想要的。
我的方法原理是,补充一个原插件触发查询的事件,就是当input输入栏发生字符变化时,重新进行查询(调用其内部的onChange函数),这里主要针对firefox而言,因为我们的系统访问最多的是IE和firefox。而恰好firefox有一个input变化的事件就是oninput,那么我们只要在原jquery.autocomplete.js第199行,插入如下代码:
.bind("input", function() {
// @hack:support for inputing chinese characters in firefox
onChange(0, true);
});
插入后,代码大概如下:
...
...
jQueryinput.unbind();
jQuery(input.form).unbind(".autocomplete");
}).bind("input", function() {
// @hack:support for inputing chinese characters in firefox
onChange(0, true);
});
...
2、支持多次回车选定:
修改91行:
// only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
修改为:
// only opera mozilla doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
$input.bind((($.browser.opera || $.browser.mozilla) ? "keypress" : "keydown") + ".autocomplete", function(event) {
关于jQuery.autocomplete 支持中文输入(firefox)修正方法的用户互动如下:
相关问题:jquery autocomplete ff 中文输入法 bug 访问两次后台
答:你使用的版本太旧了,我刚测试了在jqueryui版本下的autocomplete,发现这个bug已解决了。 请下载使用jqueryUI的版本,jqueryUI可定制下载,很小的。 >>详细
相关问题:怎么才能让jQuery ui的autocomplete支持中文呢
答:前台: jquery.ui.autocomplete.js $( "#toUser" ).autocomplete({source: function( request, response ) {var userId = $("#toUser").val();$.ajax({type: "POST",url: "MailAction?method=findUser&userIdorNum=" + encodeURI(encodeURI >>详细
相关问题:Jquery autocomplete 怎么才能支持中文搜索,显示...
答:人家就是支持中文的啊,实在不行把js文件改成utf-8的试试 >>详细
- 【Array】js中更短的 Array 类型转换-类型转换
- 【ExtJs】ExtJs 表单提交登陆实现代码-表单提交-
- 【Ajax】jQuery 学习第六课 实现一个Ajax的TreeVi
- 【extjs】extjs每个组件要设置唯一的ID否则会出错
- 【focus】JavaScript使用focus()设置焦点失败的解
- 【bootstrap3】基于bootstrap3和jquery的分页插件
- 【hover】jQuery控制图片的hover效果(smartRollo
- 【ajax更新数据库】ajax异步刷新实现更新数据库-
- 【div】div浮层 滚动条移动 位置保持不变的4种方
- 【Express】NodeJS框架Express的模板视图机制分析
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
