开发者问题收集

切换模式后出现 javascript 错误

2015-08-07
241

我刚接触 bootstrap,遇到了一个 javascript 错误,我不知道该如何处理。

我有一个数据表,第一列有复选框。选中一些复选框后,您可以单击两个按钮,打开一个模态框,其中包含不同的消息,用于接受或取消。但如果没有选中复选框,我会显示一个信息警报(也是 bootstrap),我需要“关闭”该模态框。

这是 js 代码

$('#actionsModal').on('show.bs.modal', function(e) {

    var action = $(e.relatedTarget).data('id');
    var total = $('input[id^="checkboxRol"]:checked').length;

    var message = "", object = "", confirmation = "";
    if(total == 0){
        $('.alert-info').show();


        // -----------------------------------------------------
        // this is the line giving the error!!!
        $('#actionsModal').modal("toggle");
        // -----------------------------------------------------


    }
    else if(total > 1){
        message = "Va a " + action + " los " + total + " objetos seleccionados:";
        confirmation = "¿Desea realizar esta operación?";
    }
    else{
        message = "Va a " + action + " el objeto:";
        object = "-obtener nombre-<br><br>";
        confirmation = "¿Desea realizar esta operación?";
    }

    $(e.currentTarget).find('span[id="message"]').html(message);
    $(e.currentTarget).find('span[id="object"]').html(object);
    $(e.currentTarget).find('span[id="confirmation"]').html(confirmation);
});

js 错误 是:未捕获的 RangeError:超出最大调用堆栈大小

有什么想法吗?也许我可以使用另一种类型的 bootstrap 实体,并仅使用模态框进行简单的按钮或链接点击。

提前致谢!

2个回答

如果您只想关闭模式,请使用

$('#actionsModal').modal("hide");

而不是切换。我不确定它是否对您的情况有帮助,但它可以防止 show.bs.modal 事件上不必要的无限递归(这是您的问题)

farincz
2015-08-07

解决了!

最后,只需要将“show.bs.modal”事件替换为 “shown.bs.modal” 事件

现在,该行:

$('#actionsModal').modal("toggle");

不会创建无限调用。

感谢@JesúsQuintana

trumpetero
2015-08-11