javascript - 只听按键按下的那一刻(就在按键从上变到下的时候)?

标签 javascript

我尝试使用 keydown 和 keypress,但如果用户按住某个键,两者都会不断触发。有没有办法只听用户按下键(从未按下变为按下),以便例如:按住键触发代码一次并按下它,释放它并再次按下它 2 次?

这是我用来检查哪些键按下的:

$(document).keydown(function (e){
    console.log(e.which);
});

最佳答案

您可以在第一次调用 keydown 时解除绑定(bind) keydown 处理程序,然后在 keyup 上重新绑定(bind)它。

// keydown is bound at load
$(document).keydown(function (e){
    // Call function
    doStuff();
});

// keyup rebinds the keydown event.
$(document).keyup(function(e) {
   $(document).keydown(function(e) {
     doStuff();
   });
});

// The function called on keydown does something
// and then unbinds the keydown event
function doStuff() {
   console.log("Doing stuff");
   // And unbind it...
    $(document).unbind('keydown');
}

http://jsfiddle.net/cbSRu/2/

关于javascript - 只听按键按下的那一刻(就在按键从上变到下的时候)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13870742/

相关文章:

javascript - 无法让 Bootstrap-vue 表单验证工作

javascript - 为什么我不能在 node.js 中对这个 URL 进行 url 编码?

javascript - Express + bodyParser.json() + Postman,req.body为空

javascript - 空输入类型文件在 IE 中不起作用

javascript - 在 Django 项目外加载 javascript 文件

javascript - redux-form 6.0 rc.3 版本中添加上传多张图片的字段

javascript - 如何从android webview JavascriptInterface调用admob插页式广告

javascript 未定义,即使我之前使用过它?

javascript - VS Code 显示模块未找到,即使 WebPack 构建有效

javascript - 如何将D3js图表放置在网格系统中?