web-dev-qa-db-ja.com

フルカレンダーにクリックイベントを追加する

イベントにクリックイベントを追加し、曜日とイベント時間をurl変数として別のページに渡すにはどうすればよいですか?ユーザーがイベントをクリックしたときに、日付とイベント時刻を別のページに渡して処理したいと思います。

10
sbekele
$('#calendar').fullCalendar({
    eventClick: function(calEvent, jsEvent, view) {
        window.location = "http://www.domain.com?start=" + calEvent.start;

    }
});

詳細については、こちらをご覧ください: http://arshaw.com/fullcalendar/docs/mouse/eventClick/

21
Dustin Laine

日付グリッドをクリックするためのコールバック:

dayClick: function(date, allDay, jsEvent, view) {
...
}

イベントをクリックするためのコールバック:

eventClick: function(event) {
...
}

この実世界のデモを試すことができます: http://www.gbin1.com/technology/jquery/devappwithfullcanlendar/gbin1schedule.htm

2
terry

ダイアログを呼び出してデータを入力する方法は次のとおりです。

$('#calendar').fullCalendar({ 
    dayClick: function (date, allDay, jsEvent, view) {  
        $("#dialog").dialog('open');
    },   
});

$("#dialog").dialog({
    autoOpen: false,
    height: 350,
    width: 700,
    modal: true,
    buttons: {
        'Create event': function () {
            $(this).dialog('close');
        },
        Cancel: function () {
            $(this).dialog('close');
        }
    },

    close: function () {
    }

}); 
1
Hasan Ozgan

Eventオブジェクトにはurlパラメーターがあります。これにより、<a>タグが作成されます。これをバックエンドで自分で作成して、必要な引数をURLに渡すことができます。 @durilaiのjavascriptメソッドも同様に機能します。

1
partkyle

さて、私は自分の質問に答えたようです。 Javascript関数escape()がそのトリックを実行します。

1
Justin B

私はこれが古い投稿であることを知っていますが、私は今朝似たようなものを探していました。他のいくつかの解決策を検討した後、私の解決策ははるかに単純だったと感じています。 1つは、アンカータグで素晴らしいフォントを使用していることです。

ユーザーがイベントをクリックしたときに、カレンダーにイベントを表示したかったのです。だから私は次のように別のタグをコーディングしました:

<div id="eventContent" class="eventContent" style="display: none; border: 1px solid #005eb8; position: absolute; background: #fcf8e3; width: 30%; opacity: 1.0; padding: 4px; color: #005eb8; z-index: 2000; line-height: 1.1em;">
    <a style="float: right;"><i class="fa fa-times closeEvent" aria-hidden="true"></i></a><br />
    Event: <span id="eventTitle" class="eventTitle"></span><br />
    Start: <span id="startTime" class="startTime"></span><br />
    End: <span id="endTime" class="endTime"></span><br /><br />
</div>

Asp.netを使用しているので、jqueryでクラス名を使用する方が簡単です。

以下は私のfullcalendarアプリのjqueryです。

<script>

    $(document).ready(function() {

        $('#calendar').fullCalendar({
            googleCalendarApiKey: 'APIKEY',
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },
            events: {
                googleCalendarId: '@group.calendar.google.com'
            },
            eventClick: function (calEvent, jsEvent, view) {
                var stime = calEvent.start.format('MM/DD/YYYY, h:mm a');
                var etime = calEvent.end.format('MM/DD/YYYY, h:mm a');
                var eTitle = calEvent.title;
                var xpos = jsEvent.pageX;
                var ypos = jsEvent.pageY;
                $(".eventTitle").html(eTitle);
                $(".startTime").html(stime);
                $(".endTime").html(etime);
                $(".eventContent").css('display', 'block');
                $(".eventContent").css('left', '25%');
                $(".eventContent").css('top', '30%');
                return false;
            }
        });
        $(".eventContent").click(function() {
            $(".eventContent").css('display', 'none');
        });
    });

</script>

独自のGoogleカレンダーIDとAPIキーが必要です。

シンプルなポップアップ表示が必要なときにこれが役立つことを願っています

1
Roger