Как закрыть окно загрузки при использовании настраиваемого диалога

Я использую bootbox, чтобы отобразить диалог.

Если я использую bootbox.confirm, bootbox.alert или bootbox.prompt, при нажатии клавиши escape или нажатии вне диалогового окна диалог закрывается как ожидалось

но при использовании bootbox.dialog, когда я выхожу за диалоговое окно или нажимаю клавишу escape, диалоговое окно не закрывается, как заставить его вести себя как другое диалоговое окно?

var box = bootbox.dialog({
    show: false,
    backdrop: true,
    animate: false,
    title: 'Bla',
    message: 'bla bla bla',
    buttons: {
        cancel: {
            label: 'Cancel',
            className: 'btn-warning'
        },
        save: {
            label: 'Parse',
            className: 'btn-success',
            callback: function () {
                // handling with ajax
                return false;
            }
        }
    }
});
box.modal('show');

Ответ 1

Это должно сделать это. Обратите внимание, что это было проверено только на v3. используя bootstrap 2.3.2

$(document).on('click', '.modal-backdrop', function (event) {
    bootbox.hideAll()
});

Ответ 2

Добавьте функцию обратного вызова onEscape, которая может иметь пустой элемент.

См. документы и пример.

Базовый код:

bootbox.dialog({
   onEscape: function() {},
   // ...
});

Ответ 3

Честно говоря, я никогда не пользовался модальным - это происходило из PR давно, давным-давно, но я никогда не был уверен в его прецеденте. Теперь вам нехорошо, но метод фактически прокомментирован как устаревший в версии 3.0 и, вероятно, фактически будет удален в будущих версиях - он просто не подходит (для меня), для чего был создан Bootbox, а также как другие методы измененный, улучшенный и проверенный, он сидел там, где-то пренебрегали.

Но вы можете сделать что-то вроде этого

$(document).keyup(function(e) {
  if (e.keyCode == 27) {box.modal("hide");}   // esc
});