在通过ESC关闭的模态中通过ESC关闭文件对话框

时间:2016-01-14 20:07:44

标签: 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';
    }
});

到目前为止一切顺利。

在某些情况下,活动模式有一个文件上传按钮。打开文件资源管理器对话框并按下ESC时,它将关闭文件资源管理器和模式。

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

1 个答案:

答案 0 :(得分:1)

基本上,当文件输入对话框打开(单击事件)时,设置一个变量以指示对话框已打开。然后,您可以绑定到文件输入的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';

    }
});

从记忆中写出,但一般概念是