模态被隐藏,但是模态的“历史”被保留

时间:2019-01-08 21:02:10

标签: javascript twitter-bootstrap

我希望我能适当地解释我的问题,因为这很令人困惑,而且我无法在3小时内找到答案...

说明

首先,我正在为我的学校开发拼车网站。因此,用户可以预订其他用户提供的旅行。

如果用户A决定预订B的游览,则他单击一个按钮。此按钮将打开Bootstrap Modal,其中A必须确认预订。

如果他接受预订,则应该预订游览(目前有警报作为我的信息)。如果预定的旅行是他会议中第一次预定的旅行,那么一切正常。

现在,用户A要预订另一个游览,他单击按钮,并显示一个模态(就像应该的那样),他再次确认预订。

现在是真正的问题。

在确认他的第二笔预订后,将有两个警报,第一个带有第一次预订的旅行数据的警报,然后是带有当前预订数据的警报。

如果A试图预订第三次旅行,将有三个警报,依此类推...

这使我无法处理预订,并导致数据库中出现各种问题。

我尝试了什么?

我已经思考了一段时间,做出了不同的输出,试图改变我的模态的关闭方法(甚至完全删除它=>我现在知道的很愚蠢),通读文档并尝试了我发现的其他解决方案网络,但没有一个对我有用。

突出显示不起作用,对此表示抱歉:// 因此,在var mymodal中,我保存了显示的模态。

代码说明

在mymodal中,我“保存”要显示的模式(始终有效) “ ConfirmBooking”按钮是我的,惊喜,惊喜,确认按钮,以确认预订。

警报“ alertLogged”也正确显示,并在3秒钟后消失

如代码中所述,setTimeout方法之内和之后的所有警报都会被反复调用,并将新警报附加到该行(始终是单独的警报)。

bookTour()方法有效,唯一的问题是每次完成新预订时都会调用所有旧预订,因此我已将其注释掉

var mymodal = $("#ModalEingeloggt");//Modal zum bestätigen setzen
mymodal.find(".modal-body p").html("Wollen sie wirklich \"" + fahrt + " Uhr\" für ihr Kind buchen? <br> Der Fahrer Ihres Kindes ist "+fahrername +".");
modal.modal();
$("#ConfirmBooking").on("click",function(){//wenn angenommen wird
    mymodal.modal('hide');
    $('#alertLogged').html("<div class='alert alert-success'>"+fahrt+" wurde bei "+fahrername+" gebucht!</div>");
    $('#alertLogged').addClass("show");
    setTimeout(function() { //With every new Modal all the alerts from the old Modals are called aswell
        $("#alertLogged").removeClass("show");
        alert(fahrername+"-"+fahrt+"-"+fahrttag+"!");
        //bookTour(fahrername,fahrt,fahrttag);
    }, 3000);
    alert(fahrername+"-"+fahrt+"-"+fahrttag+".");
    //bookTour(fahrername,fahrt,fahrttag);
});

我希望有人能帮助我,因为我真的不知道如何解决这个问题...

提前感谢您为我牺牲的每一秒。

这是我的第一个大项目,所以如果这是一个非常愚蠢的问题,请不要太苛刻...

1 个答案:

答案 0 :(得分:1)

怀疑,您每次打开模式对话框时都会附加一个事件处理程序,然后可以通过选择按钮元素并在“事件侦听器”选项卡中的单击-列表下查看处理程序列表,在chrome中对此进行验证。每次增长。关闭模态并不会破坏模态内部的元素,而只是隐藏它们。最简单的解决方案可能是在关闭模式对话框时分离事件处理程序(例如,使用.off())。