2010-10-22 37 views
5

Ai đó có thể cho tôi biết làm thế nào để ngừng kéo/thay đổi kích thước các sự kiện trong đó event.id > 100? Chỉ những sự kiện đó sẽ không thể kéo được.FullCalendar: Cách dừng kéo các sự kiện tùy chỉnh?

cập nhật với Mã mẫu:

eventRender: function(event, element) { 
    if (event.id > 100) { 
     event.disableDragging(); 
     event.disableResizing(); 
    } 

    element.qtip({ 
     content: GetEventToolTip(event), 
     position: { corner: { tooltip: 'bottomLeft', target: 'topMiddle'} }, 
     style: { 
      border: { 
       width: 1, 
       radius: 5 
      }, 
      padding: 5, 
      textAlign: 'left', 
      tip: false, 
      name: event.iscustom == 'True' ? 'cream' : 'dark' 
     } 
    }); 
} 

Cảm ơn.

Trả lời

4

Cả disableDragging cũng không disableResizingchức năng quy định tại fullcalendar tính 1.4.8. Tôi chắc chắn rằng 2 người trên thế giới đã không thử đề xuất đầu tiên :) Tuy nhiên, bạn sẽ cần phải gõ vào chính đối tượng jQuery UI để vô hiệu hóa kéo hoặc thay đổi kích thước ở cấp độ sự kiện. Vì vậy, (chứ không phải cố gắng để sử dụng chức năng không tồn tại) thử điều này trong eventRender(event, element) callback của bạn:

if (event.id > 100) { 

    element.draggable = false; 

} 

Lưu ý rằng tôi chỉ đơn giản là thiết lập tài sản trên các yếu tố jQuery riêng của mình vì nó gắn liền với hành vi kéo UI của. Tương tự như vậy cho EXCEPT có thể thay đổi kích thước mà bạn sẽ cần phải loại bỏ div (class = ui-resizable-handle ui-resizable-s) được thêm bởi fullcalendar bằng cách xác định nó bằng bộ chọn jquery và xóa nó (chỉ cần chắc chắn đặt một className duy nhất cho mỗi sự kiện trong sự kiện yoru mảng để bạn có thể dễ dàng xác định nó trong DOM). Vui lòng yêu cầu (các) nhà phát triển fullcalendar thêm các thuộc tính disableDraggingdisableResizing vào đối tượng Sự kiện. Mất ít hơn một phút để thêm hỗ trợ cho điều này vào nguồn.

+0

Câu trả lời hay. Nó làm việc tốt cho tôi. Cảm ơn Aaron !!! – Saiful

+0

@Saiful Tôi làm cách nào để vô hiệu hóa chỉ có thể thay đổi kích thước? Tôi đã thử thêm eventRender: function (event, element) { nếu (event.title == "typeA") {\t \t \t $ ('. TypeA'). Resizable = false; \t } }, không có may mắn – BaconJuice

+1

Trong fullcalendar v2, thuộc tính 'editable' nên được sử dụng thay vì' draggable' – akn

2

tôi sẽ nói:

if(event.id > 100) 
{ 
    event.disableDragging(); 
    event.disableResizing(); 
} 
+1

1: Và, có lẽ là nơi tốt nhất để đặt này sẽ được gọi lại eventRender: http: // arshaw .com/fullcalendar/docs/event_rendering/eventRender/ – sdolan

+0

Không hoạt động, cả hai phương pháp đều nói: Lỗi: Đối tượng không hỗ trợ thuộc tính hoặc phương pháp này – Saiful

+0

bạn nên đăng một số mã để hiểu rõ hơn – Dalen

3

này làm việc hoàn hảo cho tôi:

if (event.id > 100) { 
    element.draggable = false; 
    element.resizable = false; 
} 
12
eventRender: function(event, element) { 
    if (event.id.indexOf("IDENTIFYING_STRING") == -1) 
    { 
     event.editable = false; 
    }      
} 
+0

Rất tốt! Tôi thích điều này. Cảm ơn. Tôi vẫn kết thúc việc loại bỏ các lớp để bạn không làm cho chuột trở thành một con trỏ và gây nhầm lẫn cho người dùng. Khác hơn thế, giải pháp hoàn hảo. '$ (phần tử) .find ('. fc-resizer'). remove(); $ (phần tử) .removeClass ('fc-draggable'). RemoveClass ('fc-resizable'); ' – cocojiambo

-4

Sử dụng các thẻ khi tạo fullcalendar của bạn để tắt kéo hoặc thay đổi kích thước. Các tài liệu arshaw không phải là rất giải thích nhưng đây là cách giải thích chúng.

$('#calendar').fullCalendar({ 
    disableResizing:true, 
    disableDragging:true, 

    //the rest of your code... 

disableDragging: Boolean, Mặc định: false Vô hiệu hóa tất cả các sự kiện kéo, thậm chí khi các sự kiện có thể chỉnh sửa.

disableResizing: Boolean, Mặc định: false Vô hiệu hóa tất cả các sự kiện thay đổi kích thước, thậm chí khi các sự kiện có thể chỉnh sửa.

0

Bạn phải hack fullcalendar.js

dòng bỏ ghi chú

t.isEventDraggable = isEventDraggable; 
t.isEventResizable = isEventResizable; 

thay thế chức năng:

function isEventDraggable(event) { 
     return isEventEditable(event) && !opt('disableDragging') && 
      !event.disableDragging; 
} 


function isEventResizable(event) { // but also need to make sure the seg.isEnd == true 
     return isEventEditable(event) && !opt('disableResizing') && 
      !event.disableResizing; 
} 

Bây giờ bạn có thể bật/tắt thay đổi kích thước và kéo cho mỗi sự kiện như bạn muốn.

0

Tôi không thành công với các phương pháp được hiển thị tại đây. Tôi đã kết thúc hack fullcalendar.js để thêm một lựa chọn noDragging cho các sự kiện, đó là thực sự rất đơn giản:

gốc:

function isEventDraggable(event) { 
    return isEventEditable(event) && !opt('disableDragging'); 
} 

thay đổi nó để:

function isEventDraggable(event) { 
    return isEventEditable(event) && !opt('disableDragging') && !event.noDragging; 
} 

Chỉ cần thêm việc kiểm tra cho event.noDragging.

-2

Sử dụng các thẻ này khi tạo toàn bộ lịch để tắt tính năng kéo hoặc thay đổi kích thước.

**> $('#calendar').fullCalendar({ 
> 
> editable: false, 
> 
> //the rest of your code... }** 
+0

Điều này dành cho vô hiệu hóa toàn cầu, không phải cho id> 100 – BaconJuice

0

Không element.draggable = falseevent.ediable = false làm việc cho tôi. Nó phải là do phiên bản mới hơn của FullCalendar. Nếu đó là trường hợp của bạn, hãy thử:

if (event.id > 100) { 
    event.startEditable = false; 
} 

Làm việc cho tôi.

Hoặc bạn có thể hủy bỏ sự kiện di chuyển sau khi giảm:

eventDrop: function (event, delta, revertFunc) { 

      if (event.id < 100) 
       revertFunc(); 
     } 
+0

revertFunc không phải là hàm –

3

Đây là giải pháp tốt nhất:

$('#calendar').fullCalendar({ 
    disableDragging = true 
}); 
2

FullCalendar v1.6.4

eventRender: function(jsEvent, element) { 

if(jsEvent.id > 100) { 

    jsEvent.startEditable = false; 
    jsEvent.durationEditable = false; 
    } 

    return element;    
} 

Giải pháp này có đã làm việc cho tôi như một sự quyến rũ.

Tôi đã triển khai thư viện JS này với Ruby Gem "Fullcalendar_engine".

0

trong có thể chỉnh sửa chỉ cần viết sai sự thật và nó sẽ không có khả năng kéo và thả có thể chỉnh sửa: false

+1

Vui lòng xem xét chỉnh sửa câu trả lời của bạn bao gồm thêm giải thích có thể giúp OP và bất kỳ ai có thể có cùng một vấn đề trong tương lai – CallumDA

Các vấn đề liên quan