我正在寻找一种方法来禁用所有密钥代码,直到next()
功能完成。
我尝试使用return false
,但它没有用。
nextDown = {};
$(document).keydown(function(event){
if(event.keyCode == '39'){
if (nextDown['39'] == null) {
next();
nextDown['39'] = true;
}
}
});
$(document).keyup(function(event) {
nextDown[event.keyCode] = null;
});
在函数完成解绑后,有没有办法将{false}绑定到keydown
?
答案 0 :(得分:2)
如何声明变量来执行此操作。以下代码是否解决了您的问题?
nextDown = {};
var _lock = false;
$(document).keydown(function(event){
if(event.keyCode == '39'){
if (!_lock && nextDown['39'] == null) {
_lock = true;
next();
nextDown['39'] = true;
}
}
});
$(document).keyup(function(event) {
nextDown[event.keyCode] = null;
});
function next() {
...
_lock = false;
}
如果没有,请提供一个jsfiddle示例
答案 1 :(得分:0)
有一种非常简单的方法可以实现这一目标。首先创建一个全局变量并将其设置为0.然后在next()之前将cont设置为1,并在next()完成之后将其设置为0。这将允许您创建if语句,其中cont == 1
将停止您的其他功能,cont == 0
将允许它们运行。
var cont = 0;
$(document).keydown(function(event){
if(event.keyCode == '39' && cont == 0){
if (nextDown['39'] == null) {
cont = 1;
next();
cont = 0;
nextDown['39'] = true;
}
}
});
$(document).keyup(function(event) {
if (cont == 0) {
nextDown[event.keyCode] = null;
}
});
答案 2 :(得分:0)
你必须使用回调来做你想做的事。