beim hinzufügen von events zu Fullcalendar durch externe drag-and-drop item nicht bekommen id
Ich bin mit FullCalendar externen drag-and-drop, mit seinem code. http://arshaw.com/js/fullcalendar-1.5.2/demos/external-dragging.html
drop: function(date, allDay) { //this function is called when something is dropped
//retrieve the dropped element's stored Event Object
var originalEventObject = $(this).data('eventObject');
//we need to copy it, so that multiple events don't have a reference to the same object
var copiedEventObject = $.extend({}, originalEventObject);
//assign it the date that was reported
copiedEventObject.start = date;
copiedEventObject.allDay = allDay;
//render the event on the calendar
//the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)
$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
//is the "remove after drop" checkbox checked?
if ($('#drop-remove').is(':checked')) {
//if so, remove the element from the "Draggable Events" list
$(this).remove();
}
}
Jedes Ding ist okay, aber ich möchte, um dieses Ereignis fiel auf meine Datenbank. So habe ich meine add-dialog codes hier.
var eventToAdd = {
title: $.trim($(this).text()),
//title: $(this).attr('id'),
description: $(this).attr('original-title'),
start: date.format("dd-MM-yyyy hh:mm:ss tt"),
end: date.format("dd-MM-yyyy hh:mm:ss tt")
};
if (checkForSpecialChars(eventToAdd.title) || checkForSpecialChars(eventToAdd.description)) {
alert("please enter characters: A to Z, a to z, 0 to 9, spaces");
}
else {
//alert("sending " + eventToAdd.title);
PageMethods.addEvent(eventToAdd, addSuccess);
}
Also das Ergebnis ist,
drop: function (date, allDay) { //this function is called when something is dropped
if($(this).attr('id')=='')
return;
//retrieve the dropped element's stored Event Object
var originalEventObject = $(this).data('eventObject');
//we need to copy it, so that multiple events don't have a reference to the same object
var copiedEventObject = $.extend({}, originalEventObject);
//assign it the date that was reported
copiedEventObject.start = date;
copiedEventObject.allDay = allDay;
$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
$(this).remove();
var eventToAdd = {
title: $.trim($(this).text()),
//title: $(this).attr('id'),
description: $(this).attr('original-title'),
start: date.format("dd-MM-yyyy hh:mm:ss tt"),
end: date.format("dd-MM-yyyy hh:mm:ss tt")
};
if (checkForSpecialChars(eventToAdd.title) || checkForSpecialChars(eventToAdd.description)) {
alert("please enter characters: A to Z, a to z, 0 to 9, spaces");
}
else {
//alert("sending " + eventToAdd.title);
PageMethods.addEvent(eventToAdd, addSuccess);
}
}
Ereignis gezeigt wird, der Fall ist ziehbar, aber nicht die Id. Ich denke, die Veranstaltung, die gerendert in dieser Zeile ist nicht im Zusammenhang mit der Veranstaltung an die Datenbank gesendet:
$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches problem, auch nicht wenn man ein externes element, aber wenn ein neues Ereignis erstellen, indem Sie auf ein Zeitfenster.
Wenn Sie benötigen die id, Sie muss nicht Rendern direkt die Veranstaltung gelöscht, sondern erhalten Ihre Daten (Titel, start, Ende, ganztags), in der Datenbank speichern, abrufen der gespeicherten Ereignis-und machen es. Auf diese Weise wird es mit der ID verknüpft.
Die Methode verwendet, um in der Datenbank speichern, muss wieder die Veranstaltung erforderlichen Informationen von fullcalendar gerendert werden.
Dies ist der code den ich verwendet habe:
Ich hoffe, das hilft
FYI Sie können auch eine id für die draggable div im HTML -, dann tun Sie etwas wie:
innerhalb der "drop -:" - Attribut (gleich nach:
in der "external-dragging.html" Beispiel.
Für externe Ereignisse, die
drop
Rückruf ist nur für die "low-level" ablegen von Daten. DieeventReceive
Rückruf, was Sie wollen:Docs: https://fullcalendar.io/docs/dropping/eventReceive/