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

作者:realazy 来源:realazy 时间:2007-11-01 12:57:00 

在某些情况下,比如自动补全(auto complete)的输入框中,需要使用keyup事件来监听键盘的输入以迅速作出回应。

关键在于keyup, 如果世界是美好的,那么就不会有这篇blog. 可是……

世界是不美好的。我们活在中文世界,我们要用输入法。在输入法开启的情况下,您会碰到不美好的事情:keyup失效。对于您绑定到keyup的任何回调函数,除非您把输入法切换回英文状态,否则它会无动于衷。如果能称之为bug,我会很高兴,因为bug会有修复的可能,如果是特征(feature),那么,我只好叹息一下。

问题

在开启输入法的情况下,三个浏览器的具体问题如下:

  • IE:触发keydown和keyup, 不触发keypress. 能够获得输入值。

  • Firefox:触发keydown和keypress, 不触发keyup. 输入值未能获得。在回车后会触发keyup, 可获得输入值。

  • Opera:keydown, keypress和keyup都不触发,输入值也未能获。

(如果您能帮我试用一下Safari,我会很高兴并谢谢您。这里有一个测试页面:http://tonextone.com/test/eventTest.html

解决方案

总结出以上问题,没有兴奋反而陷入绝望,因为没有google出解决方案(是的,对于拉丁语系的老外来说,不会存在输入法)。但是,wait, 谷歌搜索的自动补全不是工作得好好的吗?于是研究一下这个 http://www.google.cn/ac.js。嘿嘿,虽然混淆得还可以,但还是可以发现蛛丝马脚的。它使用一个计时器,当输入框处于聚焦(focus)状态时,每10秒执行一次回调函数。

虽然挺耗资源(所以建议在输入框失焦(blur)时,一定要清除这个计时器),但也只能如此了。作前端开发的,不仅要与语言(JavaScript, CSS, HTML) 斗,还要与浏览器斗,其乐无穷也。

标签:keyup,键盘,blur,JavaScript
0
投稿

猜你喜欢

  • Adobe AIR beta 2震撼发布!

    2007-10-07 11:57:00
  • 可用性研究:为文字链接扩大可点击区域

    2008-09-18 18:23:00
  • ie7.0浏览器 兼容问题苦煞网站设计者

    2007-08-08 17:11:00
  • 23个MySQL数据库安全使用技巧

    2007-10-26 16:02:00
  • ASP实例:即时显示当前页面浏览人数

    2008-04-19 22:02:00
  • javascript农历日历及世界时间代码

    2007-12-21 13:25:00
  • Oracle 数据表分区的策略

    2010-07-21 13:30:00
  • 超级简单实现框架滚动控制

    2008-07-01 12:14:00
  • 18个超棒的Web和移动应用开发框架

    2011-03-31 17:04:00
  • 如何在不同版本的SQL Server中存储数据

    2009-01-15 13:06:00
  • ASP 获取腾讯IP地址的代码

    2011-02-26 11:19:00
  • IE7下动态创建Iframe时,去除边框的办法

    2009-01-19 13:56:00
  • asp如何用组件实现自动发送电子邮件?

    2010-06-16 09:56:00
  • asp 删除数据并同时删除图片的代码

    2011-02-28 10:39:00
  • 38个Asp内置函数介绍

    2008-11-27 16:25:00
  • FrontPage 2002应用技巧四则

    2008-08-17 10:57:00
  • IE6下的CSS BUG枚举

    2010-06-11 10:45:00
  • asp 静态页面的另一种思路

    2011-04-08 10:32:00
  • 几个好用的Asp自定义函数

    2007-09-26 14:28:00
  • MySQL的双机热备份安装和配置

    2012-01-05 19:00:58
  • asp之家 网络编程 m.aspxhome.com