29

問題は、フルカレンダーの月/週ビューで過去の日付の選択を無効にする方法です。

ユーザーが過去の日付をクリック/選択できないようにしたい。

ここに画像の説明を入力

イベントレンダリングで実装しようとしているグーグルコードスニペットを次に示します。

selectable: true,
selectHelper: false,
select: function(start, end, allDay) {
        var appdate = jQuery.datepicker.formatDate('<?php echo $DPFormat; ?>', new Date(start));
        jQuery('#appdate').val(appdate);
        jQuery('#AppFirstModal').show();
    },
    eventRender: function(event, element, view)
    {
        var view = 'month' ;
       if(event.start.getMonth() !== view.start.getMonth()) { return false; }
    },

しかし、それはうまくいきません。

以下のCSSも試してみましたが、これは過去の日付のテキストのみを非表示にするのに役立ちますが、選択可能は過去の日付ボックスでまだ機能しています。

.fc-other-month .fc-day-number {
     display:none;
}

私は本当にこの問題で立ち往生しています。誰か助けてください。ありがとう...

4

16 に答える 16

35

フルカレンダーでこれを実行しましたが、完全に機能しています。

このコードをselect関数に追加できます。

 select: function(start, end, allDay) {
    var check = $.fullCalendar.formatDate(start,'yyyy-MM-dd');
    var today = $.fullCalendar.formatDate(new Date(),'yyyy-MM-dd');
    if(check < today)
    {
        // Previous Day. show message if you want otherwise do nothing.
        // So it will be unselectable
    }
    else
    {
        // Its a right date
        // Do something
    }
  },

お役に立てば幸いです。

于 2013-02-21T23:15:59.177 に答える
5

以下を組み合わせることができます。

-質問に記載されているように、CSS でテキストを非表示にします

-当月の PREV ボタンを無効にする

-dayClick/eventDrop などの日付を確認します。

dayClick: function(date, allDay, jsEvent, view) {
    var now = new Date();
    if (date.setHours(0,0,0,0) < now.setHours(0,0,0,0)){
        alert('test');
    }
    else{
         //do something
    }
}
于 2013-02-21T09:18:36.363 に答える
1

以下は私が現在使用しているソリューションです:

        select: function(start, end, jsEvent, view) {
            if (moment().diff(start, 'days') > 0) {
                $('#calendar').fullCalendar('unselect');
                // or display some sort of alert
                return false;
            }
于 2015-11-23T20:33:34.953 に答える
1

validRangeオプションを利用してきました。

validRange: { start: Date.now(), end: Date.now() + (7776000) // sets end dynamically to 90 days after now (86400*90) }

于 2018-07-28T12:22:13.777 に答える