我有一个庞大的Javascript文件,可以捕获应用程序各个屏幕上的各种键控。我总是使用return false();
来防止发生默认的键控操作,这很好用。
但是,在此特定键下,return false;
之前有一个confirm()
框。如果我按 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;
}
}
您可以使用
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;
}
}
js小提琴