我有一个问题,我不能为我的生活弄清楚我在这里做错了什么。我知道这是一个问题,但我尝试过的所有可行解决方案都不起作用。好了!
我使用FullCalendar作为预订系统,该系统有一个外部数据库检查,以查看在FullCalendar中请求的房间是否已被预订。检查工作完美(如果在此期间预订了某些事项,则返回零表示未预订或更高的数字)。但是我已经把代码放进去,以防止你已经预订了一个房间。然后单击取消并从FullCalendar中选择另一个日期/时间范围,然后执行另一次检查。问题是,检查还包括先前的检查(如果它在预订的插槽上返回1)并且还检查新的插槽,解雇两个帖子查询(如果我尝试预订的第一个插槽已经被拿走,这个返回1,然后没有刷新的第二次尝试返回1,然后返回0作为两个单独的帖子查询) - 这种情况一次又一次地发生,每次增加1个查询后。如何阻止它多次发布?我希望这有一定道理!
以下是从动态创建的对话框执行检查的代码。
$('#msgBox').on('change','#room',function() {
room = $( "#room option:selected" ).text();
host = $( "#host" ).val();
console.log(room)
if (room == "Boardroom") {
$('#coffee').show()
} else {
$('#coffee').hide()
}
$.post('checkroom.asp',{
name : host,
room : room,
start : moment(startDate).format('YYYY-MM-DD HH:mm:ss'),
end : moment(endDate).format('YYYY-MM-DD HH:mm:ss')
},
function(data){
if(data > 0){
if (Admin) {
$(":button:contains('Ok')").prop("disabled", false).removeClass("ui-state-disabled");
$(":button:contains('OK + Book Room')").prop("disabled", false).removeClass("ui-state-disabled");
$('#msgBox3').html('The room you have selected is showing as booked for these times, but you are admin and can override this.')
} else {
$(":button:contains('Ok')").prop("disabled", true).addClass("ui-state-disabled");
$(":button:contains('OK + Book Room')").prop("disabled", true).addClass("ui-state-disabled");
$('#msgBox3').html('The room you have selected is showing as booked for these times, please select an alternative room.')
}
$('#msgBox3').dialog('option','title','Unable to proceed')
$('#msgBox3').dialog('option','buttons',[{text: "Ok", click: function(){$('#msgBox3').dialog('close')}}])
$('#msgBox3').dialog('open')
} else {
$(":button:contains('Ok')").prop("disabled", false).removeClass("ui-state-disabled");
$(":button:contains('OK + Book Room')").prop("disabled", false).removeClass("ui-state-disabled");
}
}
)
});
答案 0 :(得分:0)
令人难以置信的是,周一早上的一双新鲜眼睛,我用一个角色解决了这个问题。而这个角色恰好是一个" e"。
随着@blgt说它不止一次绑定处理程序,我只是用谷歌搜索一次绑定它的方式,.one
事件处理程序符合条件,因此将.on
更改为.one
现在意味着它只会发射一次!
这是一个向正确的方向轻轻推动,我有一些小小的欢乐感,因为我自己修改了它以进行改变:)