我正在使用箭头键导航表。基于当前选定的行,我必须在div中加载一些细节。在选择一行之后,它将向服务器发出Ajax调用以获取更多细节并在div中加载该细节。这可能需要一些时间来进行Ajax调用和更新div。在这段时间内,我想禁用按键事件。
$('#tbl tbody').on('keydown', function (event) {
var keyCode = event.keyCode;
if (keyCode >= 37 && keyCode <= 40) {
event.preventDefault();
ChangeTarget(keyCode)
}
});
我只是想在一段时间内解除绑定或暂停keydown事件。
我试图利用时间,但这并不能帮助我。
$('#tbl tbody').on('keydown', function (event) {
var keyCode = event.keyCode;
if (keyCode >= 37 && keyCode <= 40) {
event.preventDefault();
ChangeTarget(keyCode);
setTimeout(function () {
}, 10000);
}
});
我不想记录任何关键事件,直到Ajax完成它的工作!!!
答案 0 :(得分:3)
您可以使用布尔标志而不是取消绑定。
以下是一个例子:
var keyNavigationDisabled = false;
$('#tbl tbody').on('keydown', function (event) {
if (keyNavigationDisabled) return;
var keyCode = event.keyCode;
if (keyCode >= 37 && keyCode <= 40) {
event.preventDefault();
ChangeTarget(keyCode)
}
});
function getRemoteData() {
keyNavigationDisabled = true;
$.ajax({
url: 'http://example.com',
complete: function () {
keyNavigationDisabled = false;
}
});
}