2014-10-27 241 views
3

我正在申請FullCalendarFullCalendar,可以設置可選false,但允許選擇插槽

我注意到,selectable設置爲true,用戶能夠選擇不需要的多個星期或時間段。另一方面,當我將selectable設置爲false時,我不能再使用用戶選擇時隙時要觸發的選擇操作。有沒有什麼方法selectable功能將保持爲false,但仍然可以單獨選擇每個時隙,而不是時隙組的一部分。

這裏是我的代碼,如陣列穿過PHP:

'options'=>array(
'header'=>array(
    'left'=>'prev,next,today', 
    'center'=>'title', 
    'right'=> 'month,agendaWeek,agendaDay', 
), 
'minTime' => '09:00:00', 
'maxTime' => '20:00:00', 
'slotDuration' => '01:00:00', 
'slotEventOverlap' => false, 
'defaultTimedEventDuration' => '01:00:00', 
'allDaySlot' => false, 
'allDay' => false, 
'lazyFetching'=>true, 
'weekends' => false, 
'selectable' => true, 
'height' => 'auto', 
'contentHeight' => '150', 
// 'selectHelper' => true, 
// 'events'=>array(), // pass array of events directly 
'select' => new CJavaScriptExpression("function(start, end, jsEvent, view) { 
        var currdisplay = view.name; 
        var check = Date.parse(start)/1000; 
        var today = Date.parse(new Date())/1000; 
        if (currdisplay != 'month' && check >= today) { 
         var start1 = Date.parse(start)/1000; 
         var end = Date.parse(start)/1000 + 3600; 
         window.location.href = \"www.somelink.com/?from=\" + start1 + \"&to=\" + end; 
         }}"), 
'dayClick' => new CJavaScriptExpression("function(date, jsEvent, view) { 
        var currdisplay = view.name; 
        if (currdisplay == 'month') { 
         $('.calendar').fullCalendar('gotoDate', date); 
         $('.calendar').fullCalendar('changeView', 'agendaWeek'); 
        }}"), 

我目前的修復,或許你可以在代碼塊見:

var start1 = Date.parse(start)/1000; 
var end = Date.parse(start)/1000 + 3600; 

這兩行確認如果用戶選擇5個時間段,在開始時間後5小時後設置結束時間爲1小時(3600秒),但不是5個小時後,但我不滿意這個解決方案,因爲我沒有發現它乾淨,不喜歡那selectable功能仍然可用。

回答

3

的時隙不完美的解決方案:

這是否工作不夠好,你呢?

http://jsfiddle.net/3E8nk/739/

select: (function() { 
    var humanSelection = true; 
    return function(start, end, jsEvent, view) { 
     if(humanSelection) { 
      humanSelection = false; 
      $('#calendar').fullCalendar('select', start); 
      humanSelection = true; 
     } 
    }; 
})(), 

解天:

嘗試使用天點擊設置背景顏色,你想要什麼,而不是。

See fiddle

dayClick: (function() { 
    var lastThis; 
    return function(date, jsEvent, view) { 
     if(lastThis) 
      lastThis.css('background-color', 'white'); 
     lastThis = $(this); 
     $(this).css('background-color', 'lightblue'); 
    } 
})(), 
+0

喜理查德,實際上之後什麼IM是某種slotClick而不是一天的點擊,我想我的代碼上選擇一個獨特的時間段,而不是一組時隙 – nikolas 2014-10-27 22:27:36

+0

來trigered @尼古拉斯這不能像圖書館那樣適當地完成,但不應該很難延長。我在上面提供了一個不完美的解決方案,但是如果您決定在源代碼上工作,那麼我認爲arshaw會欣賞拉請求:) – 2014-10-28 00:53:07

+0

好吧,它似乎也有訣竅..可能從fullcalendar沒有本地選項,但這似乎工作確定:) – nikolas 2014-10-28 12:35:54