0

我正在为表格使用箭头键导航。根据当前选定的行,我必须在 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 完成工作之前,我不想记录任何关键事件!!!

4

1 回答 1

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;
        }
    });
}
于 2013-01-17T08:58:55.887 回答