Javascript 在模式中通过ESC关闭文件对话框,该模式也通过ESC关闭

Javascript 在模式中通过ESC关闭文件对话框,该模式也通过ESC关闭,javascript,modal-dialog,Javascript,Modal Dialog,我有一个模式对话框div,设置为在用户按下ESC时关闭,如下所示: //close modal when pressing Esc document.addEventListener('keyup', function (e) { if (e.keyCode === 27) { m.style.display = 'none'; mbg.style.display = 'none'; } }); 到目前为止一切都很好 在某些情况下,活动模式具有文

我有一个模式对话框div,设置为在用户按下ESC时关闭,如下所示:

//close modal when pressing Esc
document.addEventListener('keyup', function (e) {
    if (e.keyCode === 27) {
        m.style.display = 'none';
        mbg.style.display = 'none';
    }
});
到目前为止一切都很好

在某些情况下,活动模式具有文件上载按钮。打开“文件资源管理器”对话框并按ESC键时,将关闭“文件资源管理器”和“模式”


当我按ESC键关闭文件资源管理器时,如何防止模式关闭?

基本上,当文件输入对话框打开时(单击事件),设置一个变量以指示对话框打开。然后,您可以为文件输入绑定onchange事件,该事件指示对话框已关闭(包括取消和确认按钮),并将变量设置回原位。然后在单击esc键时检查变量,以查看对话框是否打开

var isDialogOpen = false;

var fileInput  = document.getElementById("fileInput");
fileInput.addEventListener("click", function(){isDialogOpen = true;});
fileInput.addEventListener("change", function(){isDialogOpen = false;});

document.addEventListener('keyup', function (e) {
    if (e.keyCode === 27 && !isDialogOpen) {
        m.style.display = 'none';
        mbg.style.display = 'none';

    }
});
从记忆中写出来,但一般的概念是存在的