我希望我能适当地解释我的问题,因为这很令人困惑,而且我无法在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);
});
我希望有人能帮助我,因为我真的不知道如何解决这个问题...
提前感谢您为我牺牲的每一秒。
这是我的第一个大项目,所以如果这是一个非常愚蠢的问题,请不要太苛刻...
答案 0 :(得分:1)
怀疑,您每次打开模式对话框时都会附加一个事件处理程序,然后可以通过选择按钮元素并在“事件侦听器”选项卡中的单击-列表下查看处理程序列表,在chrome中对此进行验证。每次增长。关闭模态并不会破坏模态内部的元素,而只是隐藏它们。最简单的解决方案可能是在关闭模式对话框时分离事件处理程序(例如,使用.off())。