【问题标题】:How to listener the keyboard type text in Javascript?如何在 Javascript 中侦听键盘类型的文本?
【发布时间】:2010-12-06 15:38:45
【问题描述】:

我想获取键盘输入的文本,而不是键码。比如我按shift+f,我得到的是“F”,而不是听两个键码。再比如,我点击F3,我什么也没输入。在 js 中我怎么知道呢?

【问题讨论】:

  • 您是在文本框中输入内容吗?
  • 没有。用户不会在文本框中输入内容。
  • 注意: OP 对可以与输入法编辑器 (IME)(例如中文)一起使用的机制感兴趣。也许应该是问题本身提到的要求。

标签: javascript events dom-events


【解决方案1】:

要在整个文档范围内执行此操作,请使用keypress 事件,如下所示。目前没有其他广泛支持的关键事件会这样做:

document.onkeypress = function(e) {
    e = e || window.event;
    var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
    if (charCode) {
        alert("Character typed: " + String.fromCharCode(charCode));
    }
};

对于所有与键相关的 JavaScript 事务,我推荐 Jan Wolter 的优秀文章:http://unixpapa.com/js/key.html

【讨论】:

  • 当用户使用输入法编辑器 (IME) 时,这会起作用吗?
  • @Chris:我不知道。您心目中的 IME 如何与网页上的表单控件交互?
  • 我只是提到了 OP 在评论中删除的另一个要求(请参阅我的回答)。
【解决方案2】:

我使用 jQuery 来做这样的事情:

$('#searchbox input').on('keypress', function(e) {

    var code = (e.keyCode ? e.keyCode : e.which);
  if(code == 13) { 
           //Enter keycode
     //Do something
  }

});

编辑:由于您没有绑定到文本框使用:

$(window).on('keypress', function(e) {

    var code = (e.keyCode ? e.keyCode : e.which);
  if(code == 13) { 
           //Enter keycode
     //Do something
  }

});

http://docs.jquery.com/Main_Page

【讨论】:

  • 但用户不会在文本框中输入内容。
【解决方案3】:

您可以监听onkeypress 事件。但是,您需要使用String.fromCharCode()翻译密钥代码,而不是只检查提供密钥代码的event.keyCode (IE) 或event.which (Mozilla) 属性。

Javascript Char Codes (Key Codes) 是一个很好的演示。查看源代码并查找displayKeyCode(evt) 函数。

其他参考:w3schools - onkeypress Eventw3schools - JavaScript fromCharCode() method

【讨论】:

  • 但它不知道用户何时使用其他打字方式,例如中文。
  • 所以 .. 要清楚:您不会使用文本框(或文本区域),但您希望能够处理用户在您的网络上键入的结果字符页面,它可能是由 输入法编辑器 (IME) 生成的字符......具有挑战性。
  • 不要使用keydown 事件来检索字符信息。根本不可能可靠地做到这一点。请改用keypress
  • @Tattat 我认为 IME 不适用于按键事件。一些证据:bugs.dojotoolkit.org/ticket/3156 .. 参考更改历史部分:“IME 输入的字符触发了 compositionEnd 事件。使用 onkeypress 事件没有意义的原因(除了浏览器不工作)那种方式)是 IME 让您输入一系列字符(通常是两个字符),因此 onkeypress 事件无法表示输入了两个字符。onkeypress 仅用于单个字符。”
  • @Tattat 所以...也许看看 compositionEnd 事件?但是,我对此没有任何指导意见。但是,祝你好运。
【解决方案4】:

这太复杂了,无法快速回答。这是我用作键盘处理的权威参考。 http://unixpapa.com/js/key.html

【讨论】:

  • 不错的资源 - 我正在为它添加书签。然而,在这种特殊情况下,提及输入法编辑器 (IME) 的工作方式(或不工作方式)会有所帮助。
  • 我希望我没有说得好像我写了那篇文章。
  • 好吧,这篇文章确实有作者(Jan Wolter)的名字,所以从这个角度来看很明显它不是你的文章,但在你的回答中它说“这是我的权威参考...” ..可以这样解释;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 2020-07-27
相关资源
最近更新 更多