Javascript 启动/停止按键事件jquery

Javascript 启动/停止按键事件jquery,javascript,jquery,keypress,Javascript,Jquery,Keypress,我有个问题。我想在按下空格时停止按键事件,然后我想做些什么,最后我需要“重新启动”这个功能。有可能吗?我该怎么做 先谢谢你 $(document).keypress(function(e) { if(e.keyCode == 32) // stop keypress function // do something // restart keypress function } 尝试以下功能之一: e.stopPropagat

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

先谢谢你

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

尝试以下功能之一:

e.stopPropagation();

完整代码:

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

我相信你有两个选择

禁用处理程序:

$(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;    
});

嗯,你可以像这样玩它,因为我为这两种情况都添加了两个按钮,默认情况下,空间将被禁用。请查收:

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">

工作示例

您的关闭条件是空间,但未提及打开条件。。所以我使用下面的计时器。。随你的便

要尝试演示

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

    var logicalOff=false;
    $(文档)。按键(功能(e){
    if(logicalOff){return true;}//我们只是忽略并返回,直到打开为止
    $('div').text(e.which);
    如果(e.which==32){
    logicalOff=true;//停止按键功能
    setTimeout(函数(){//重新启动按键功能
    logicalOff=假;
    $('div').text(“现在打开”);
    }, 10000);          
    $('div').text(“关闭10秒”);
    }     
    });
    
    谢谢,我使用第一种方法,效果很好。
    <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">
    
    $(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);
        });
    });