0

アプリケーションのさまざまな画面でさまざまなキーダウンをキャプチャする大量の Javascript ファイルがあります。私は常にreturn false();デフォルトのキーダウンアクションが発生しないようにするために使用していますが、これはうまく機能します。

ただし、この特定のキーダウンでは、.confirm()の前にボックスがありますreturn false;。を押すとC台詞confirm()が出てきます。それを邪魔にならないように移動すると、その下に、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 に答える