【问题标题】:How would I test for when a key is released in JavaScript我将如何测试何时在 JavaScript 中释放密钥
【发布时间】:2014-08-28 18:59:37
【问题描述】:

我想让一个变量在我按下一个键时变为真,当它被释放时变为假。我有一个函数可以在按下键时将 var 设置为 true,但是我还需要在释放键时调用一个函数来将 var 重置为 false。

【问题讨论】:

  • 您正在寻找keyup...
  • 谢谢你,lc,我确实做了一些谷歌搜索,但没有这样的结果。也许我不擅长谷歌,但请不要认为我没有尝试只是因为我不擅长。

标签: javascript keyboard


【解决方案1】:
<input onkeydown="doX();" onkeyup="doY();" type="text">

<script type="text/javascript">     
   var flag = false;   
   function doX(){
      flag = true;        
   }

   function doY(){
     flag = false;    
   }
</script>

解释:

这里有两个重要的键盘事件可以提供帮助。

  1. keydown(按下键时触发)
  2. keyup(释放键时触发)

keydown事件调用doX函数,keyup事件调用doY函数!!

代码 #2:

<script type="text/javascript">
    var input = document.getElementById("test");
    var flag;       
    input.onkeydown = function(){
        flag = false;
    }

    input.onkeyup = function(){
        flag = true;
    }
</script> 

由于您要求识别“空格键”,我已在此处添加代码:

<script type="text/javascript">
    var input = document.getElementById("test");
    var flag;       
    input.onkeydown = function(e){
        var char = e.keyCode; //32 is for 'SPACE BAR'           
        flag = false;
    };

    input.onkeyup = function(e){
        var char = e.keyCode; //32 is for 'SPACE BAR'           
        flag = true;
    };
</script>

【讨论】:

  • 你可以从这里javascript.info/tutorial/keyboard-events获取所有键盘事件@
  • 内联事件处理不是一个好的做法,简单地转储代码而不做解释也不是一个好的答案。
  • 这是一个直截了当的答案。这里不需要太多解释。开发者可能不知道“事件”。
  • 也许对你来说直截了当。如果对 OP 来说是直截了当的,那么这个问题就不存在了。简单解释有什么害处?
  • 内联事件处理的替代方法是什么?此外,代码非常有用。感谢 Raja csp,我从这个答案中获得了足够的信息来开展我的工作,但我想知道我应该做什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 2016-01-16
相关资源
最近更新 更多