Bootbox回调函数无法正常工作

8

我想使用这个:

 $('#delete').live('click',function(){
                var result;
                bootbox.confirm("Are you sure?", function(response){
                        result=response;
                });
                alert(result);
                return result;
            });

但是当按钮被点击时:

首先显示警报,然后才显示bootbox确认对话框。

我想返回响应,但如果我从回调函数中返回它,它不起作用,因为它会从回调函数中返回响应,而不是从$('#devicedelete').live('click',function(){})中返回。

顺便说一下,我正在尝试根据响应提交表单。因此,如果我返回'true',则将提交表单,否则如果返回'false',则不会提交表单。

请检查这个:http://pastebin.com/9H3mxE9Y

我有一个带有每行复选框的大表格,用户选择复选框并单击任何一个按钮(如“删除”,“复制”等),表单应该被提交。

谢谢

1个回答

4
对话框是异步的,您可以立即防止默认操作,然后在用户接受后调用提交。以下是一个示例:http://jsfiddle.net/ty5Wc/3/
$('#delete').on('click', function (e) {
    e.preventDefault();
    bootbox.confirm("Are you sure?", function (response) {        
        if(response) {
            $('#form').submit();
        }
    });
});
$('#form').submit(function () {
    //do your validation or whatever you need to do before submit
});

编辑:在与发帖人进一步交流后,他还想在查询字符串中传递按钮值,我为此提供的解决方法在这里:http://jsfiddle.net/ty5Wc/5/

$('#delete').on('click', function (e, confirmed) {
    if (!confirmed) {
        e.preventDefault();
        bootbox.confirm("Are you sure?", function (response) {
            if (response) {
                $('#delete').trigger('click', true);
            }
        });
    }
});
$('#form').submit(function (e) {
    //do your validation or whatever you need to do before submit
});

嗨,我想返回响应的值,响应可能是'true'或'false'。但如果我在回调函数中这样做,它不起作用,因为它会从回调函数返回响应。 - Pruthvi Raj Nadimpalli
这是在点击时发生的,它会返回什么?无论如何,不要在它返回后做任何你想做的事情,只需将它们变成函数并从回调函数中调用这些函数。 - Smern
我已经更新了我的答案,你可以使用 preventDefault() 来阻止表单提交。 - Smern
我花了相当多的时间来解决关于bootbox.confirm的一个缺陷。现在问题已经解决了,谢谢。 - Perdomoff
@Perdomoff - 没问题,很有趣可以收到关于3年前我已经忘记的东西的评论 :p - Smern
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接