用bootbox.js确认替换JavaScript确认警报

时间:2014-05-20 07:39:14

标签: javascript jquery bootbox

我不太了解如何实现bootbox.js来替换我的标准javascript确认警报弹出窗口并需要一些帮助。我已经阅读了一些主题和文档,但是不能完全正确。

我目前有这个按钮/链接,用于保存模板中的记录编号:

<a href="{% url overseas_experience_details_duplicate overseas_experience_detail.id %}" onclick="if(confirmDuplicate())showProgressAnimation();else return false;">{% trans "Duplicate" %}</a>

这会调用我想用bootbox.js替换的当前js函数:

function confirmDuplicate() {
    return confirm("Are you sure?");
}

如果选中“确定”选项,则会复制记录(显示重复记录时显示进度动画)。如果选择了CANCEL选项,则不会发生任何事情。

我已经使用以下代码来实现bootbox警报,但我不知道如何返回启动框OK确认,然后将复制记录。

bootbox.js

function confirmDuplicate() {
    bootbox.confirm("Are you sure?", function(result) {
    if (result == true) {

        // not too sure what to insert here to return the bootbox confirm();

    }
});

一些有效的建议将不胜感激

更新问题

我现在已经弹出了bootbox确认弹出,但我无法返回“true”或“false”确认结果。这是我的新代码:

function confirmDuplicate() {
    bootbox.confirm({
        callback: function(result) {
            if (result) {
                return result;
            }
        }
    }
}

我很沮丧,我无法返回结果来复制记录。

任何帮助都会很棒。

3 个答案:

答案 0 :(得分:3)

尝试这样的事情:

<a href="whatever" onclick="return myConfirm(this.href)">....

myConfirm = function(url) {
    bootbox.confirm("sure?", function(okay) {
        if(okay)
             location.href = url;
    });
    return false;
}

您无法立即获得bootbox.confirm结果,因此从处理程序返回false以防止链接被跟踪并在回调函数中执行所需的操作。

答案 1 :(得分:0)

继续我对您的问题的评论,这里是一个非阻碍性的jquery版本:

$('.your-link-class').on('click', function(e) {
   e.preventDefault(); //this would be equivalent to the return false in your code
   var self = this;
   bootbox.confirm("Are you sure?", function(result) {
       if (result) {
           // Here you have access to the jquery object of your link with $(self)
           // and you can do stuff like, for example:
           var clone = $(self).clone();
           clone.insertAfter($(self));
       }
    });
});

和一个演示(不是:在演示中我使用传统提示而不是因为我没有加载bootbox源码):

答案 2 :(得分:0)

function isConfirm(message, elem) {

    bootbox.confirm(message, function (result) {
        if (result)
            window.location.href = elem;
    });

    return false;
}
<a href='@Url.Action("DeleteAction", "Admin", new { id = Model.ActionObj.id })' onclick="javascript: return isConfrm('Are you sure you want to delete this action?', this)">  Delete </a>

将此用于功能:

function isConfirm(message, elem) {
    bootbox.confirm(message, function (result) {
        if (result)
            window.location.href = elem;
    });

    return false;
}