欢迎光临

木子屋

标题: 输入法下keyup失效的解决方案

作者: dnawo

日期: 2007-11-06 12:54 AM

分类: 脚本语言

内容: 在某些情况下，比如自动补全（auto complete）的输入框中，需要使用keyup事件来监听键盘的输入以迅速作出回应。
关键在于keyup, 如果世界是美好的，那么就不会有这篇blog. 可是……
世界是不美好的。我们活在中文世界，我们要用输入法。在输入法开启的情况下，您会碰到不美好的事情：keyup失效。对于您绑定到keyup的任何回调函数，除非您把输入法切换回英文状态，否则它会无动于衷。如果能称之为bug，我会很高兴，因为bug会有修复的可能，如果是特征（feature），那么，我只好叹息一下。
问题
在开启输入法的情况下，三个浏览器的具体问题如下：
●IE:触发keydown和keyup, 不触发keypress. 能够获得输入值。
●Firefox:触发keydown和keypress, 不触发keyup. 输入值未能获得。在回车后会触发keyup, 可获得输入值。
●Opera:keydown, keypress和keyup都不触发，输入值也未能获。
（如果您能帮我试用一下Safari，我会很高兴并谢谢您。这里有一个 测试页面 ）
解决方案
总结出以上问题，没有兴奋反而陷入绝望，因为没有google出解决方案（是的，对于拉丁语系的老外来说，不会存在输入法）。但是，wait, 谷歌搜索的自动补全不是工作得好好的吗？于是研究一下这个 http://www.google.cn/ac.js。嘿嘿，虽然混淆得还可以，但还是可以发现蛛丝马脚的。它使用一个计时器，当输入框处于聚焦（focus）状态时，每10秒执行一次回调函数。
虽然挺耗资源（所以建议在输入框失焦（blur）时，一定要清除这个计时器），但也只能如此了。作前端开发的，不仅要与语言（JavaScript, CSS, HTML） 斗，还要与浏览器斗，其乐无穷也。

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.578 ms

返回

标题: 输入法下keyup失效的解决方案

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.578 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.595 ms

返回