输入法下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
投稿

猜你喜欢

  • PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解

    2022-04-18 16:28:45
  • pytz格式化北京时间多出6分钟问题的解决方法

    2021-07-31 14:10:21
  • python获取本机外网ip的方法

    2022-06-24 01:57:16
  • Python使用Nocalhost并开启debug调试的方法

    2023-05-04 11:22:46
  • 关于MySQL中隐藏空间的问题

    2009-07-30 08:15:00
  • 初学MySql5 所应了解的知识和常见问题

    2009-03-06 17:49:00
  • 网易2016研发工程师编程题 奖学金(python)

    2021-11-21 19:37:54
  • YUI3.3.0 中 transition 事件的变化

    2011-06-16 20:51:45
  • django的聚合函数和aggregate、annotate方法使用详解

    2023-06-27 16:07:46
  • asp将table生成excel文件(xls)

    2011-03-07 11:17:00
  • python里运用私有属性和方法总结

    2023-03-29 15:33:57
  • Python类和实例的属性机制原理详解

    2022-12-12 19:47:27
  • 数字人组件反写[asp组件开发实例1]

    2009-06-09 13:10:00
  • 对python生成业务报表的实例详解

    2021-09-07 03:47:30
  • TensorFlow和Numpy矩阵操作中axis理解及axis=-1的解释

    2021-02-14 05:59:09
  • Django 如何实现文件上传下载

    2021-07-16 02:54:15
  • 从零开始学Python第八周:详解网络编程基础(socket)

    2023-09-04 05:16:20
  • Python对FTP交互封装的实现

    2023-05-18 15:12:14
  • 页面按钮禁用与解除禁用的方法

    2024-04-10 10:42:58
  • Python中的嵌套循环详情

    2022-10-29 05:53:54
  • asp之家 网络编程 m.aspxhome.com