1

好的,所以我了解如何在使用输入字段时获取键值......但我正在考虑在您的浏览器未集中在任何文本框或文本区域时按下的键值。

我正在尝试制作一个具有 0、1、2、.. 9 按钮的屏幕键盘......但是我希望用户能够使用键盘上的键按下按钮。

我在一些网站上看到过这样做,如果您在主页上按 S 键,它将带您进入登录屏幕。Facebook 也使用 L 键来点赞照片。

所以问题是:当光标没有聚焦时,如何在 javascript 中获取键值。

4

6 回答 6

4

如果您使用的是 JQuery,您只需将事件处理程序添加到文档中......

$(document).keypress(function(event) {
      alert('Handler for .keypress() called. - ' + event.which);
});

(来自http://forum.jquery.com/topic/how-to-catch-keypress-on-body

编辑 zzzzBov 的评论...

从 JQuery KeyPress文档中:

要确定输入了哪个字符,请检查传递给处理函数的事件对象。虽然浏览器使用不同的属性来存储这些信息,但 jQuery 对 .which 属性进行了规范化,因此您可以可靠地使用它来检索字符代码。

于 2013-08-07T22:04:43.463 回答
1

您需要使用 window.onkeydown 然后检查您感兴趣的键。

https://developer.mozilla.org/en-US/docs/Web/API/window.onkeydown

于 2013-08-07T22:05:20.613 回答
0

你应该听按键事件。

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

更多信息看这里链接

于 2013-08-07T22:08:00.867 回答
0

您需要向窗口添加一个事件侦听器。然后在事件处理程序中,您keyCode从传入的事件中获取属性。KeyCodes 是半任意的,因为它们不会直接映射到您的想法,因此您必须使用表格(google 上的第一个结果:http: //www.cambiaresearch.com/articles/15/javascript-char- codes-key-codes ) 来识别您关心的键码。

window.addEventListener('keypress',function (evt) {
   switch (evt.keyCode) {
       case 48:
           zeroKeyPressed(); break;
       case 49:
           oneKeyPressed(); break;
       ...
   }
}, false);
于 2013-08-07T22:08:01.113 回答
0

您将使用按键事件。

这是您的用法示例:

window.addEventListener('keypress', function (event) {

    var key_code, key;

    event = event || window.event; // IE

    key_code = event.charCode || event.keyCode || event.which || 0;
    key = String.fromCharCode(key_code);

    // prevent keys 0-9 from doing what they normally would do
    if (key_code >= 48 && <= 57) {
        event.preventDefault();
        alert('The user pressed ' + key);
    }

}, false);
于 2013-08-07T22:08:37.947 回答
0

使用纯 js,您可以在 layout.htmlcs 中使用它,开头:

  @{

        <script>
            sessionStorage.setItem("ProductionHostURL", '@System.Configuration.ConfigurationManager.AppSettings["ProductionHostURL"]');
        </script>

}
<!DOCTYPE html>

然后在 layout.htmlcs 的主 js 文件中,您可以使用如下方法:

var urlBaseProduction;
var urlBaseDevelopment;

    $(document).ready(function () {
      configureHostEnvironment()
     ....
    }

在该方法中,配置要在生产和开发中使用的变量,如下所示:

function configureHostEnvironment(){

    HOST = sessionStorage.getItem("ProductionHostURL")
    if (HOST.length <= 0) {
        alert("Host not configured correctly")
    } else {
        urlBaseProduction= host + '/api/';
        urlBaseDevelopment= host + port + '/api/';
    }
}

如果您对此方法有任何建议或改进,请发表评论。

于 2019-01-30T15:49:36.240 回答