修改jQuery.Autocomplete插件支持中文输入法避免TAB、ENTER键失效、导致表单提交_jquery
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了修改jQuery.Autocomplete插件支持中文输入法避免TAB、ENTER键失效、导致表单提交_jquery,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1522字,纯文字阅读大概需要3分钟。
内容图文
![修改jQuery.Autocomplete插件支持中文输入法避免TAB、ENTER键失效、导致表单提交_jquery](/upload/InfoBanner/zyjiaocheng/310/5cb64b7ad97c4413872dd0e6b7248496.jpg)
原因分析:
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);
});
...
内容总结
以上是互联网集市为您收集整理的修改jQuery.Autocomplete插件支持中文输入法避免TAB、ENTER键失效、导致表单提交_jquery全部内容,希望文章能够帮你解决修改jQuery.Autocomplete插件支持中文输入法避免TAB、ENTER键失效、导致表单提交_jquery所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。