自定义确认对话框无法正常工作

时间:2014-12-10 13:08:26

标签: javascript jquery ajax twitter-bootstrap bootstrap-modal

我使用Bootstrap和Jquery创建了自定义对话框,如Alert和ConfirmDialog。

以下是示例:http://jsfiddle.net/eb71eaya/

问题 - 在回调中我进行了一次ajax调用,如果它返回true,我会显示一个状态为成功的警告 - 错误。但是当请求进行删除时,此警报不会显示。 (在示例中,我没有发出ajax请求,只显示警报,但这也不起作用。)

    function getEsrbAlertDialog(title, msg, callBack, obj) {
    var esrbAlertDialog = $('#esrb-dialog');
    if (esrbAlertDialog.length == 0) {
        esrbAlertDialog = getEsrbDialog(title, msg);
    } else {
        $('.modal-title', esrbAlertDialog).html(title);
        $('.modal-body', esrbAlertDialog).html(msg);
    }

    $('.modal-footer div', esrbAlertDialog).empty();
    $('.modal-footer div', esrbAlertDialog).append('<button class="btn btn-primary pull-right close-btn">Close</button>');

    $('.close-btn', esrbAlertDialog).unbind('click').click(function () {
        if (typeof callBack === "function") {
            todo = callBack(obj);
        }
        esrbAlertDialog.modal('hide');
    });

    return esrbAlertDialog;
};

我想在确认对话框关闭时执行回调。


更新:我理解这样的逻辑:当用户点击“确定”按钮时,必须关闭对话框。当它已经关闭时,然后激活事件'hidden.bs.modal',它必须执行callBack。但是在确认对话框完成隐藏之前执行了CallBack。

2 个答案:

答案 0 :(得分:1)

这一行:

esrbConfirmationDialog.modal('hide');

隐藏第二个对话框。


编辑: 两个对话框都使用与引用相同的div:

var esrbAlertDialog = $('#esrb-dialog');

为警报创建一个单独的对话框,为确认创建一个对话框。

答案 1 :(得分:0)

将this.Alert函数替换为下面的代码,即只添加e.preventDefault();

this.Alert = function (dialogMsg, callBack, obj) {   

    var dlg = getEsrbAlertDialog('Alert', dialogMsg, callBack, obj);   
       e.preventDefault();
    dlg.modal('show');
};