Bootbox:取消对话框后的回调功能/点击'X'按钮

Bootbox: Callback function after dismissing the dialog / Clicking on the 'X' button

本文关键字:点击 按钮 功能 取消 对话框 回调 Bootbox      更新时间:2023-09-26

下面的代码片段允许我在回调函数中为单击的按钮执行一些操作。但是,我如何获得回调函数或类似的解决方法,以便在用户单击"X"按钮/取消对话框时执行一些代码?

    bootbox.dialog({
        title: "Woah this acts like an alert",
        message: "Cool info for you. You MUST click Ok.",
        buttons: {
            sucess:{
                label: "Ok",
                callback: callback
            }
        }       
    });
   callback(){//stuff that happens when they click Ok.}

我不想禁用/隐藏的关闭按钮

closeButton: false,

有一个onEscape函数。

bootbox.dialog({
    message: 'the msg',
    title: "Title",
    onEscape: function() {
        // you can do anything here you want when the user dismisses dialog
    }
}); 

单击OKx button / escape key 后,可以使用变量检查模态是否隐藏

var status = false;
$('.btn').on('click', function () {
    bootbox.dialog({
        title: "Woah this acts like an alert",
        message: "Cool info for you. You MUST click Ok.",
        buttons: {
            sucess: {
                label: "Ok",
                callback: function () {
                    status = true;
                }
            }
        },
        onEscape: function () {
            $('.bootbox.modal').modal('hide');
        }
    });
});
$(document).on("hidden.bs.modal", ".bootbox.modal", function (e) {
    callback();
});

function callback() {
    if (!status) {
        onClose();
    } else {
        onOK();
        status = false;
    }
}
function onClose() {
    $('p.alert span').removeClass().addClass('text-danger').text("Dismissed");
}
function onOK() {
    $('p.alert span').removeClass().addClass('text-success').text("Sucess");
}

Fiddle演示

有些人可能会认为这有点像黑客。尽管这很适合我,因为我只想承认作为一名开发人员,有人接受了消息,这引发了下一个事件。

使用Bootbox.js的本机confirm()方法,确实提供了callback操作。我添加了一个额外的类作为confirm按钮的选项(必须在confirm()调用中提供),具有hidden类名(例如Bootstap有一个display:none的助手类,名为hidden)。

这会隐藏确认按钮,因此模式显示为正常的警报框。

    bootbox.confirm({ 
        message: "Some Button Text", 
        buttons: {
            "cancel": {
                label: "<i class='fa fa-check'></i> OK - I understand",
                className: "btn btn-primary"
            },
            //Hide the required confirm button.
            "confirm": { label: "", className: "hidden" }
        },
        callback: function(){
            //Begin Callback
            alert( "Finished" );
        }
    });

JsFiddle示例