Всплывающее диалоговое окно с подробностями события остается прежним, даже если используется другой идентификатор - PullRequest
0 голосов
/ 12 апреля 2011

Я интегрировал FullCalendar с JSON и PHP, чтобы получать события в небольшой виджет календаря, который хорошо работает.

Я кодировал всплывающее окно css / div, которому передается идентификатор события через функцию eventClick, чтобы при нажатии на событие открывалось и использовалось ajax-запрос с переданным идентификатором для получения полной информации о событии в моемсфокусированный попбокс.

Я могу закрыть всплывающее окно без каких-либо проблем, но когда я нажимаю на следующие / предыдущие / сегодняшние вкладки, календарь обновляется, а также запускает последнее просмотренное всплывающее окно.

Я предполагаю, что это потому, что мой календарь и ajax popbox используют событие javascript и связаны друг с другом.

Может кто-нибудь помочь с несколькими строками, чтобы остановить это?

Мой код:

$('#calendar').fullCalendar({
    editable: false,
    cache: false,
    header: {left: 'title',center: '',right: 'today,prev,next'},
    events: function(start, end, callback) {
        $.getJSON("/mod/calendar/events.php?ts=1302604339",
            {
                action: "get_events",
                start: start.getTime(),
                end: end.getTime(),
                id: 'a',
                etype: "Club"
            },
            function(result){
                callback(result);
            }
        );
    },
    eventClick: function(calEvent){
        if (calEvent.txt) {
            Open_PopBox(calEvent.txt,'');
            return true;
        } else{
            return true;
        }
    }       
}); 

Код всплывающего окна:

function Open_PopBox(id,r) {
    $("#popbox").css("height", $(document).height());
    //$("#cmt_u_pload").show(); 
    var str = "id="+id+"&r="+r; 
    $.ajax({
        type: "POST",
        url: "/ajax/popbox.php",
        data: str,
        success: function(result){     
            $("#aj_popbox").ajaxComplete(function(event, request, settings) {       
                //$("#cmt_u_pload").hide();
                response = result.substring(0,3);
                if(result.substring(0,3)=="OK-"){           
                    len = result.length;
                    result = result.substring(3,len);
                }   
                $(this).html(result);
                $("#popbox").fadeIn();
            });
        }
    });
    return false;
}

Иpopbox закрывается с этим:

function Close_PopBox(){
    $("#popbox").fadeOut();
}

1 Ответ

1 голос
/ 13 апреля 2011

Я работаю с fullCalendar ежедневно в течение двух недель и обнаружил несколько побочных эффектов.

Вам нужно быть осторожным, когда вы звоните на свое мероприятие.Каждый раз, когда вы нажимаете следующий / предыдущий день, события смены представлений запускаются повсюду ... и пока они не разделены.

Я имею в виду, что все, что изменяется в текущем представлении, может вызвать событие.Я быстро просмотрел ваш код, и ваше всплывающее окно работает нормально.Теперь, когда вы нажимаете кнопку, она автоматически запускает ваши события.Я немного растерялся в момент, когда начинается

function(result){callback(result);});},

? .. в основном потому, что я не использую его таким образом.Это может быть причиной того, что оно запускает последнее событие.

Возможно, попробуйте это

$('#calendar').fullCalendar({
             header: {
                 left: 'today',
                 center: 'prev,title,next',
                 right: 'month,basicDay'
             },
             eventClick: function( event, jsEvent, view )
             { 
                Open_PopBox(event.txt,'')
                },
            events: '/mod/calendar/events.php?ts=1302604339'

            });

Внутри eventClick вы можете проверить, какое событие или представление вызывает вашу функцию.jsEvent может показать вам информацию о щелчке источника.

разбить ее так, как это будет легче отлаживать.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...