【问题标题】:Javascript detect keyspressedJavascript检测按键
【发布时间】:2015-08-11 01:24:19
【问题描述】:

我正在尝试编写一个检测鼠标移动和按键条件的程序。

如果使用 html 运行,这个 java 脚本程序可以检测到鼠标移动。我应用了类似的策略,发现“keydown”是正确的命令,但是当我运行程序时,键并没有将输出更改为“键被按下”。

var timer;
// mousemove code
var stoppedElement = document.getElementById("stopped"); 

function mouseStopped() { // the actual function that is called
stoppedElement.innerHTML = "Mouse stopped";
}

window.addEventListener("mousemove", function() {
  stoppedElement.innerHTML = "Mouse moving";
  clearTimeout(timer);
  timer = setTimeout(mouseStopped, 300);
});


//keypress code
var keysElements = document.getElementById('keyPressed');

function keysPressed() {
  keysElement.innerHTML = "Keys not Pressed";
}


window.addEventListener("keydown", function() {

  keysElement.innerHTML = "Keys Pressed";
  clearTimeout(timer);
  timer = setTimeout("keysPressed", 300);
});

我感觉我的 addEventListener for keydown 不是正确的使用方法。哪个是检查按下的键的正确 js 方法? 谢谢

【问题讨论】:

  • 看起来像一个错字,keyElement和keyElements
  • 您实际上是在寻找正确的事件。 Keydown 没问题,你的问题在别处。

标签: javascript html key mouseevent keypress


【解决方案1】:

您为 keysElements 分配了一个值,但随后引用了未定义的 keysElement。将分配从 var keysElements = ... 更改为 var keysElement = ...

我还假设您有一个包含元素 stoppedkeyPressed 的 HTML 文档,例如:

    <div id="stopped"></div>
    <div id="keyPressed"></div>

这些元素是 Javascript 正常工作所必需的。

【讨论】:

  • 是的,我正在使用那些 html 命令。您的建议确实让它注册了按键。但是,它不会变回未按下的键。我该怎么做?
  • 好吧,我想通了。您的建议奏效了,我还将 keysPressed() 方法更改为另一个 window.addEventListener() 以便它采用“keyup”并显示适当的文本。感谢大家的帮助
  • 不客气。如果我的回复确实回答了您的问题,正如您所指出的,请考虑接受它作为已回答。
【解决方案2】:

您是在窗口中还是在文本字段中进行按键操作? 对于窗口,如果你愿意,可以用 jQuery 试试这样的东西

$(document).keypress(function(e) {
    //do something
});

如果您想在文本字段中使用它,请尝试

$( "#target_input_field" ).keypress(function() {
  //do something
});

https://api.jquery.com/keypress/

【讨论】:

  • 我不知道如何用我在 codepen.io 上的代码做 jQuery。不知道能不能用
  • 请不要回答问题中既没有标记也没有提到的库,尤其是当它没有回答问题时。
  • 用户提到了javascript。 jQuery 是 javascript 库,在我看来是一个很棒的库,所以我提到了它。据我了解,当按下一个键时,OP 试图做一些事情,所以我想我可以展示 jQuery 的方式,我觉得这更容易。就是这样:)
猜你喜欢
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 2012-10-11
  • 2016-08-01
  • 1970-01-01
  • 2016-01-31
相关资源
最近更新 更多