0

fullCalendar で過去にイベントを作成しようとする人を望んでいません。そのため、日付/時刻を選択したら、次のように簡単に確認します。

select: function(start, end, allDay) { 
        // need to check the day first. If the selected day/time < today, throw an alert
        // otherwise allow the booking of the conference.
            var now = calendar.fullCalendar('getDate');
            if (start < now )
            {
                alert('You cannot book a conference in the past!' +start +now);
                calendar.fullCalendar( 'unselect' );
            }
            else
            {
                             // other stuff here
                            }

これはうまく機能します。現在より前の時刻または日付をクリックすると、それはできないという警告が表示されます。完璧ですよね?

私は jQuery DatePicker を使用しています。小さなカレンダー ビューで日付をクリックすると、予定表のみのビューにデフォルト設定されている fullCalendar でその日付に移動できます。それは非常にうまく機能します:

$( "#datepicker" ).datepicker({
        changeMonth: true,
        changeYear: true,
        minDate: 0, 
        maxDate: "+1Y",
        onSelect: function(dateText) {
            // fullCalendar only accepts a date in a specific format so parse the date
            // from the jQuery DatePicker widget and use that result to move the calendar
            // to the correct day.
            var pd = $.fullCalendar.parseDate(dateText);
            $('#calendar').fullCalendar('gotoDate', pd);
        }

    });

このルーチンにより、議題ビューで正しい週に移動できます。次に、その週に作業する日付を選択できます。ただし、gotoDate メソッドで行った日付より前の日付にイベントを作成しようとすると、過去のイベントの作成に関するエラーも発生します。「gotoDate」メソッドは事実上日付を設定しているようです。その日以降にイベントを作成できますが、その日より前に作成することはできません。

fullCalendar のナビゲーション メソッドだけを使用すると、正常に機能します。しかし、fullCalendar には「日付にジャンプ」オプションやウィジェットがないため、DatePicker を使用して独自に作成しましたが、これは当然のことだと思いました。

それで、これはバグですか?または私は何か完全に間違っていますか?

4

1 に答える 1

2

はい、Kyoka と Ganeshk のコメントのおかげで、自分の質問に答えています。たまたま、fullCalendar('getDate') 関数は、「今日」ではなく、現在選択されている日付を返します。これは、私のドキュメントの誤解にすぎません。解決策は、新しい Date オブジェクトを使用することです。この場合、完全に機能します。

select: function(start, end, allDay) { 
    // need to check the day first. If the selected day/time < today, throw an alert
    // otherwise allow the booking of the conference.
        var now = new Date();
        if (start < now )
        {
            alert('You cannot book a conference in the past!');
            calendar.fullCalendar( 'unselect' );
        }
        else
        {
                         // other stuff here
                        }

これが他の人にも役立つことを願っています。

于 2012-06-14T18:22:56.497 に答える