如何将变量传递给Bootbox确认?

时间:2014-09-07 18:19:57

标签: javascript jquery twitter-bootstrap bootbox

是否可以将jQuery变量传递给bootbox.js确认框?

以下是代码:

bootbox.confirm({
message: 'Are you sure you want to remove [productName]?',
callback: function(result) {
    console.log(result);
},
title: "You can also add a title",
});

其中" productName"是一个变量,如:

var productName = $('#product_name').val();

这样的事情可能吗?

更新:感谢下面的答案!

解决这个问题....如果我有这样的事情:

$('#product_name1 a.trash').click(function(event){

event.stopImmediatePropagation();           
event.preventDefault();

var foo = $(this).parent().attr('id');  // #product_name1

alert(foo); // correct!

bootbox.confirm({
message: 'Are you sure you want to remove [productName]?',
callback: function(result) {
   if (confirmed) 
    alert(foo); // undefined!
   }
}

});

});

我如何重新定义"这个"在回调中? "富"返回undefined,因为它现在引用了bootbox。

2 个答案:

答案 0 :(得分:2)

是的,你可以,你只需要将值与消息字符串连接起来:

var productName = $('#product_name').val();

bootbox.confirm({
message: 'Are you sure you want to remove'+productName,
callback: function(result) {
    console.log(result);
},
title: "You can also add a title",

或更干净:

var productName = $('#product_name').val();
var Message = 'Are you sure you want to remove'+productName;

    bootbox.confirm({
    message: Message ,
    callback: function(result) {
        console.log(result);
    },
    title: "You can also add a title",

答案 1 :(得分:1)

如果你需要在回调函数中使用这个变量,你可以通过制作“全局”来传递它,但是在用户调用确认和开始执行回调之间的时间,其他一些脚本可以改变它(或反向),所以对于防止冲突需要创建一些具有设置方法的对象,获取变量和阻止机制,在set / get事件上锁定/解锁变量状态,并执行所有非异步事件。

var _this = this;
confirm({
    title: "Menu discard",
    message: 'Are you sure?',
    callback: function(resolve) {
        if(resolve) {
            // _this is accessible
        }
    }
});