启动/停止按键事件jquery

时间:2016-04-06 14:56:05

标签: javascript jquery keypress

我有问题。我想在按下空格时停止按键事件,然后我想做一些事情,最后我需要“重启”这个功能。有可能吗?我怎么能这样做?

提前谢谢

$(document).keypress(function(e) {
     if(e.keyCode == 32)
          // stop keypress function
          // do something
          // restart keypress function
}

4 个答案:

答案 0 :(得分:0)

尝试以下功能之一:

e.stopPropagation();

OR

e.preventDefault();

完整代码:

$(document).keypress(function(e) {
  if (e.keyCode == 32) {
    e.preventDefault(); // e.stopPropagation();
  }
})

答案 1 :(得分:0)

我相信你有两个选择。

禁用处理程序:

$(document).on('keypress', function keypressHandler(e) {
    //disable handler
    $(document).off('keypress');

    //do stuff

    //enable keypress handler
    $(document).on('keypress', keypressHandler);    
});

使用标志:

var keyHandlerActive = true;
$(document).on('keypress', function(e) {
    if (!keyHandlerActive) { return; }
    keyHandlerActive = false;

    //do stuff

    keyHandlerActive = true;    
});

答案 2 :(得分:0)

好吧,你可以像这样玩它,因为我已经为这两种情况添加了两个按钮,默认情况下,SPACE将被禁用。请查看:

<强> HTML

<input id="myinput" type="text">
<input id="space_flag" type="hidden" value="0">
<br/>
<input id="enable_space" type="button" value="Enable Space">
<br/>
<input id="disable_space" type="button" value="Disable Space">

<强> JQuery的

$(function(){
    $("#myinput").keypress(function(event){        
        if(event.keyCode == 32 && $("#space_flag").val()==0){
            return false;        
        }
    });

    $("#enable_space").click(function(event){
        $("#space_flag").val(1);
    });

    $("#disable_space").click(function(event){
        $("#space_flag").val(0);
    });
});

工作示例http://jsfiddle.net/1pn4cLak/

答案 3 :(得分:0)

你的关闭条件是空间,但没有提到转回状态..所以我使用下面的计时器..根据需要改变它

尝试演示,

  1. 键入除空格以外的任何键以查看其是否已记录
  2. 按空格键关闭10秒钟(或更改代码直到完成一个过程)
  3. 功能在10秒后开启
  4. 当空格被按下时,该功能只会关闭(逻辑关闭,因为绑定/重新绑定可能会成为一种痛苦,如果过度使用),持续10秒。

    var logicalOff = false;
    $(document).keypress(function(e) {
         if (logicalOff) { return true; } //well we just ignore and return until turned On
         $('div').text(e.which);
         if(e.which == 32) {
           logicalOff = true; // stop keypress function
           setTimeout(function () { // restart keypress function
             logicalOff = false;
             $('div').text("turned on now");
           }, 10000);          
           $('div').text("turned off for 10 seconds");
         }     
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div></div>