将JavaScript确认警报替换为bootbox.js确认

Replace JavaScript confirm alert with bootbox.js confirm

本文关键字:确认 bootbox 替换 js JavaScript      更新时间:2023-09-26

我不太了解如何实现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警报,但我不确定如何返回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;
            }
        }
    }
}

我很沮丧,因为我不能返回结果来复制记录。

任何帮助都会很棒。

试试这样的东西:

<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,以防止链接被跟踪,并在回调函数中执行所需的操作。

继续我对您的问题的评论,这里有一个非阻塞的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源代码(:

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;
}