第二次按键时的 Javascript

标签 javascript keypress onkeypress

我一直想知道是否有一种简单的方法可以检测用户是否在一秒钟内按键盘上的同一个字符两次。我已经编写了一些可以正常工作但不可靠的代码。

var escapeCount = 0;

 function reset() {
   escapeCount = 0;
   setTimeout('reset();', 1000);
 }

 window.onload = function() {
   reset();
 };

 document.onkeyup = function(e) {
   if (!e) var e = window.event;
   var code = e.keyCode ? e.keyCode : e.which;
   if (code == 27) escapeCount +=1;
   if (escapeCount == 2) {
     // stuff on second escape
   }
 };

有更好的方法吗?谢谢

最佳答案

在按下最后一个字符后 1 秒后重置是有意义的。示例:

var lastChar = -1;

document.onkeyup = function(e) {
  if (!e) var e = window.event;
  var code = e.keyCode ? e.keyCode : e.which;

  if (lastChar == code) {
    // Same key was pressed twice in a row within 1 second.
  } else {
    lastChar = code;
    setTimeout(function() {lastChar = -1;}, 1000);
  }
};

关于第二次按键时的 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2114279/

相关文章:

javascript - 在 Backbone 和 Handlebars 中渲染简单按钮 View

c# - 我想让表单上的所有文本框仅接受代码尽可能少的数字 - c#

php - 如何让ajax javascript在按下回车键时工作

javascript - 按下键时循环一个函数

android - 如何区分长按键和普通按键?

c# - 从 javascript 函数调用 .cs 文件内的程序以实现 onkeypress 函数 ASP.net

javascript - 是否可以使 ChartJS 图表可滚动?

javascript - React Router 不编码 & 符号,而是对路径参数中的空格进行编码

javascript - 函数过早返回过滤器并降低了效果

c# - 仅对 KeyPress 事件中的文本输入起作用