使用jQuery“ keypress”功能时,如何禁用按键提升?

时间:2018-12-30 07:26:59

标签: javascript jquery console keyboard-events onkeypress

https://jsfiddle.net/pk2dLxuy/是我的小提琴。

$(document).keypress(function(keydetect) {
if(keydetect.which == 119) {
       console.log("w")
    }
if(keydetect.which == 97) {
       console.log("a")
    }
if(keydetect.which == 115) {
       console.log("s")
    }
if(keydetect.which == 100) {
       console.log("d")
    }
});

当前,该程序在激活后会检测到任何“ WASD”键,并将它们输出到控制台中。

但是,当您开始按住“ WASD”键之一时,它会缓慢启动,然后逐渐上升到全速。

我如何做到这一点,以便在按住键的同时始终以全速登录控制台?

1 个答案:

答案 0 :(得分:1)

我在Mac上使用以下代码运行了此代码。最初有一个延迟,但是我担心这是外部密钥重复延迟。不受您的控制。 为了避免这种情况,您需要一个循环,在该循环中,通过按键设置按键状态并重复进行。取消按键。这将使您可以更好地控制它,而不依赖于系统。这有道理吗?

var key;
var count = 0;

const setKey = (keyPressed) => {
  if(keyPressed != key) {
    count = 0;
    key = keyPressed;
    } else { 
    count++;
    }
    document.querySelector('#key').innerHTML = count;
};

$(document).keypress(function(keydetect) {
if(keydetect.which == 119) {
       console.log("w");
       setKey('w');
    }
if(keydetect.which == 97) {
       console.log("a");
       setKey('a');
    }
if(keydetect.which == 115) {
       console.log("s");
       setKey('s');
    }
if(keydetect.which == 100) {
       console.log("d");
       setKey('d');
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="key"></div>