我有问题。我想在按下空格时停止按键事件,然后我想做一些事情,最后我需要“重启”这个功能。有可能吗?我怎么能这样做?
提前谢谢
$(document).keypress(function(e) {
if(e.keyCode == 32)
// stop keypress function
// do something
// restart keypress function
}
答案 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);
});
});
答案 3 :(得分:0)
你的关闭条件是空间,但没有提到转回状态..所以我使用下面的计时器..根据需要改变它
尝试演示,
当空格被按下时,该功能只会关闭(逻辑关闭,因为绑定/重新绑定可能会成为一种痛苦,如果过度使用),持续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>