0

我有一个巨大的 Javascript 文件,它在应用程序的各个屏幕上捕获各种按键。我总是用它return false();来防止发生默认的按键操作,效果很好。

但是,在这个特定的按键下,confirm()return false;. 如果我点击Cconfirm()对话就会出现。如果我把它移开,在它下面,c已经写入文本框了。

我怎样才能成功压制keydown?这只需要在 Chrome 中工作。

document.onkeydown = keyDown;

function keyDown()
{
    switch(window.event.keyCode)
    {
        case(67):
            if(confirm('You have unsaved data! Press OK to Save or Cancel to Discard')) {
                alert('Do something...');
            }
            else {
                return false;
            }
            window.location = '/invoice-12345';
            return false;
        break;
    }
}
4

1 回答 1

1

您可以使用 延迟确认setTimeout

document.onkeydown = keyDown;

function keyDown()
{
    switch(window.event.keyCode)
    {
        case(67):
            setTimeout(function() {
                if(confirm('You have unsaved data! Press OK to Save or Cancel to Discard')) {
                    alert('Do something...');
                }
                else {
                    return false;
                }
                window.location = '/invoice-12345';
            }, 0);
            return false;
        break;
    }
}

jsFiddle

于 2012-09-24T20:14:02.103 回答