2013-10-29 5 views
9

से परे पूर्ण कैलकुलेटर में तिथियों को अवरुद्ध करने के लिए कैसे करें मेरे पास भविष्य में एक तिथि है जो वर्तमान तिथि से हमेशा 30 दिन पहले होती है। यह एक तिथि वस्तु में संग्रहीत है। मैं इस बाहर का उपयोग कर काम किया:किसी निश्चित दिनांक

var currentDate = new Date(); 
var futureBlockDate = new Date(); 
futureBlockDate.setDate(currentDate.getDate() + 30); 

FullCalendar jQuery plugin मैं नेत्रहीन एक अलग पृष्ठभूमि रंग तो एक उपयोगकर्ता जानता साथ कैलेंडर पर इस तिथि अतीत किसी भी दिन बाहर ब्लॉक करना चाहते हैं का उपयोग करते हुए वे उन पर क्लिक नहीं कर सकते या कोई ईवेंट बना उन दिनों पर।

पूर्ण कैलेंडर के साथ ऐसा करने का सबसे अच्छा तरीका क्या है? हो सकता है कि डिफ़ॉल्ट रूप से सभी तिथियां अक्षम करें, और केवल एक विशिष्ट सीमा के लिए सक्षम करें (आज की तारीख से भविष्य में 30 दिनों तक)?

मुझे लगता है कि मैं निम्नलिखित कोड का उपयोग कर सभी कक्षों के लिए एक विकलांग पृष्ठभूमि राज्य आवेदन कर सकते हैं:

$(".fc-widget-content").addClass("disabled"); 

.disabled .fc-day-content { 
    background-color: #123959; 
    color: #FFFFFF; 
    cursor: default; 
} 

यह कैसे किया जा सकता है?

उत्तर

17

उपयोग रेंज दिनांक से बाहर करने के लिए एक "अक्षम" वर्ग को जोड़ने के लिए dayRender विकल्प। (संस्करण 2.0) अक्षम सेल के लिए क्लिक पर

$('#calendar').fullCalendar({ 
    ... 
    viewRender: function(view){ 
     if (view.start > maxDate){ 
      $('#calendar').fullCalendar('gotoDate', maxDate); 
     } 
    } 
    ... 
}); 
+0

कि अच्छा काम करता है का सुझाव कर सकते हैं, धन्यवाद आप !! –

+4

क्या यह ब्लॉक इस क्षेत्र में घटनाओं को क्लिक या खींचती है? –

+2

यह समाधान केवल महीने, मूलभूत, और मूलभूत विचारों के लिए काम करता है :) – frabiacca

6

How about this solution?

dayClick: function(date, allDay, jsEvent, view) { 
    var myDate = new Date(); 

    //How many days to add from today? 
    var daysToAdd = 15; 

    myDate.setDate(myDate.getDate() + daysToAdd); 

    if (date < myDate) { 
     //TRUE Clicked date smaller than today + daysToadd 
     alert("You cannot book on this day!"); 
    } else { 
     //FLASE Clicked date larger than today + daysToadd 
     alert("Excellent choice! We can book today.."); 
    } 

} 
+0

यह बिल्कुल ठीक काम किया चुना है ... यू एक तिथि के अंदर समय को अवरुद्ध करने के लिए एक रास्ता .. –

0

:

$('#calendar').fullCalendar({ 
    ... 
    dayRender: function(date, cell){ 
     if (date > maxDate){ 
      $(cell).addClass('disabled'); 
     } 
    } 
    ... 
}); 

तुम भी viewRender घटना और gotoDate विधि, आज के बाद 30 दिनों आगे की तुलना में नेविगेट करने के लिए उपयोग कर सकते हैं उपयोगकर्ताओं को रोकने के लिए

dayRender: function(date, cell) { 
    // It's an example, do your own test here 
    if(cell.hasClass("fc-other-month")) { 
      cell.addClass('disabled'); 
    } 

}, 
dayClick: function(date, jsEvent, view) { 
    if($(jsEvent.target).hasClass("disabled")){ 
     return false; 
    } 
    // Your code 
    // .... 
} 
1

किसी ऐसे व्यक्ति के लिए जो min-display-date और max-display-date परिभाषित करने के लिए समाधान ढूंढ रहा है: (पूर्ण कैलकुलेटर v2 के लिए)

$('#calendar').fullCalendar({ 
    defaultDate: new Date(), 
    viewRender: function(view, element) { 

     curdate = new Date(); 
     viewdate = new Date(view.start); 

     // PREV - force minimum display month to current month 
     if (new Date(viewdate.getFullYear(), viewdate.getMonth() + 1, 1).getTime() <= 
      new Date(curdate.getFullYear(), curdate.getMonth(), 1).getTime()){ 
      $('.fc-prev-button').prop('disabled', true); 
      $('.fc-prev-button').css('opacity', 0.5); 
     } else { 
      $('.fc-prev-button').prop('disabled', false); 
      $('.fc-prev-button').css('opacity', 1); 
     } 

     // NEXT - force max display month to a year from current month 
     if (new Date(viewdate.getFullYear(), viewdate.getMonth() + 1).getTime() >= 
      new Date(curdate.getFullYear() + 1, curdate.getMonth() + 1).getTime()){ 
      $('.fc-next-button').prop('disabled', true); 
      $('.fc-next-button').css('opacity', 0.5); 
     } else { 
      $('.fc-next-button').prop('disabled', false); 
      $('.fc-next-button').css('opacity', 1); 
     } 
    } 
}); 
1

यह एक मौजूदा महीने की अवधि

<?php $numerodias = cal_days_in_month(CAL_GREGORIAN, date('m'), date('Y')); ?> 
$('#calendar').fullCalendar({ 
      header: { 
       left: 'prev,next', 
       center: 'title', 
       right: 'today' 
      }, 
      defaultDate: moment(), 
      editable: false, 
      //height:'auto', 
      //weekends: false, 
      defaultView: 'agendaWeek', 
      eventLimit: true, 

      events: { 
       url: 'php/get-events.php', 
       error: function() { 
        $('#script-warning').show(); 
       } 

      }, 
      loading: function(bool) { 
       $('#loading').toggle(bool); 

      }, 
     viewRender: function(view,element) { 
      var now = new Date(); 
      var end = new Date(); 
      end.setMonth(now.getMonth()); 
      end.setDate(<?php echo $numerodias; ?>); 
      now.setDate(1); 
      if (end < view.end) { 
       $("#calendar .fc-next-button").hide(); 
       return false; 
       alert(end); 
      } 
      else { 
       $("#calendar .fc-next-button").show(); 
      } 

      if (view.start < now) { 
       $("#calendar .fc-prev-button").hide(); 
       return false; 
      } 
      else { 
       $("#calendar .fc-prev-button").show(); 
      } 
     } 
     }); 
    }); 
संबंधित मुद्दे