使用帖子数据进行JQuery动态选项检查

时间:2015-09-04 11:05:29

标签: jquery post dialog

我有一个问题,我不能为我的生活弄清楚我在这里做错了什么。我知道这是一个问题,但我尝试过的所有可行解决方案都不起作用。好了!

我使用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");
            }
        }

    )               
}); 

1 个答案:

答案 0 :(得分:0)

令人难以置信的是,周一早上的一双新鲜眼睛,我用一个角色解决了这个问题。而这个角色恰好是一个" e"。

随着@blgt说它不止一次绑定处理程序,我只是用谷歌搜索一次绑定它的方式,.one事件处理程序符合条件,因此将.on更改为.one现在意味着它只会发射一次!

这是一个向正确的方向轻轻推动,我有一些小小的欢乐感,因为我自己修改了它以进行改变:)