在 FullCalendar 的 select 日期,点击精度校准错误
On select of date on FullCalendar, the click accuracy is miscalibrated
我还没有找到另一个类似的问题。有一些类似的解决方案,例如“确保并包括 'prev' 和 'next' 按钮”以及关于时区等的事情。我不认为后端的逻辑或时区或代码有任何问题.当我点击现有事件时,它们工作正常。我可以单击、拖放、编辑、检索弹出模式等。但是当我单击日期中的空 space 时,它是不准确的。我可以看到它在视觉上选择了错误的框。每个月的每一天都是如此。点击框左上角 25% 的位置是准确的。底部和左侧的 75% 在那个方向上相差一个框。
看看 5 月 18 日。
红色:工作完美
黄色:选择第 19 个
蓝色:选择第26位
绿色:选择第 25
这就像一个奇怪的校准问题。但是如果我点击一个事件,即使它在那个框的底部,就像 5 月 5 日的 Thomas,它也能正常工作。下面是我的js文件。
function GetEventsOnPageLoad() {
$('#calendar').fullCalendar({
header: {
left: 'prev, next today',
center: 'title',
right: 'month, agendaWeek, agendaDay'
},
buttonText: {
today: 'Today',
month: 'Month',
week: 'Week',
day: 'Day'
},
selectable: true,
select: function (start) {
selectedEvent = {
eventID: 0,
start: start,
allDay: true,
};
CreateFullCalEvent(start.toISOString());
$('#calendar').fullCalendar('unselect');
},
height: 'parent',
events: function (start, end, timezone, callback) {
$.ajax({
type: "GET",
contentType: "application/json",
url: "GetEventData",
dataType: "JSON",
success: function (data) {
var events = [];
$.each(data, function (i, data) {
events.push(
{
title: data.title,
start: moment(data.start),
end: moment(data.end),
allDay: true,
backgroundColor: data.color,
id: data.id,
textColor: data.textColor
}
);
});
callback(events);
}
})
},
nextDayThreshold: '00:00:00',
editable: true,
droppable: true,
nowIndicator: true,
eventClick: function (info) {
GetFullCalEventByID(info);
},
eventDrop: function (info) {
console.log(info);
UpdateFullCalEvent(info.id, info.start.toISOString(), info.end.toISOString());
},
eventResize: function (info) {
UpdateFullCalEvent(info.id, info.start.toISOString(), info.end.toISOString());
}
})
}
function CreateFullCalEvent(start) {
window.location.href = "CreateFullCalEvent?start=" + encodeURIComponent(start);
}
function GetFullCalEventByID(eventinfo) {
$.ajax({
type: "GET",
url: "GetFullCalEventByID/" + eventinfo.id,
dataType: "JSON",
contentType: "applicaton/json; charset=utf-8",
success: function (eventdetails) {
showModal('Event Details', eventdetails, true);
}
});
}
function UpdateFullCalEvent(id, start, end) {
var object = {};
object.id = id;
object.start = start;
object.end = end;
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "UpdateFullCalEvent/",
dataType: "JSON",
data: JSON.stringify(object)
});
}
function showModal(title, body, isEventDetail) {
$("MyPopup .modal-title").html(title);
if (isEventDetail == null) {
$("#MyPopup .modal-body").html(body);
$("#MyPopup").modal("show");
}
else {
var title = 'Title: ' + body.title + '</br>';
var details = 'Details: ' + body.details + '</br>';
var date = 'Date: ' + moment(body.start).format("M/D/YYYY") + '</br>';
var empName = 'Employee: ' + body.employeeName + '</br>';
url = 'Location: ' + body.url + '</br>';
var modalPop = $("#MyPopup .modal-body");
modalPop.html(title + details + date + empName + url);
$("#MyPopup.modal").modal("show");
}
}
关于第 16 到 21 行的问题。即使我根本不调用函数,它也会发生。如果我只是像下面那样做一个弹出模式,我仍然可以看到它突出显示并选择了错误的日期:
selectable: true,
select: function () {
showModal('Create an Event', 'Create new Event feature coming soon. For now, use create button in list view', null);
CSS 是问题所在。我有
body {
zoom: 110%;
}
显然 fullCalendar 对 CSS 的缩放功能反应不佳。如果用户在浏览器中放大,这不是问题。
我还没有找到另一个类似的问题。有一些类似的解决方案,例如“确保并包括 'prev' 和 'next' 按钮”以及关于时区等的事情。我不认为后端的逻辑或时区或代码有任何问题.当我点击现有事件时,它们工作正常。我可以单击、拖放、编辑、检索弹出模式等。但是当我单击日期中的空 space 时,它是不准确的。我可以看到它在视觉上选择了错误的框。每个月的每一天都是如此。点击框左上角 25% 的位置是准确的。底部和左侧的 75% 在那个方向上相差一个框。
看看 5 月 18 日。 红色:工作完美 黄色:选择第 19 个 蓝色:选择第26位 绿色:选择第 25
这就像一个奇怪的校准问题。但是如果我点击一个事件,即使它在那个框的底部,就像 5 月 5 日的 Thomas,它也能正常工作。下面是我的js文件。
function GetEventsOnPageLoad() {
$('#calendar').fullCalendar({
header: {
left: 'prev, next today',
center: 'title',
right: 'month, agendaWeek, agendaDay'
},
buttonText: {
today: 'Today',
month: 'Month',
week: 'Week',
day: 'Day'
},
selectable: true,
select: function (start) {
selectedEvent = {
eventID: 0,
start: start,
allDay: true,
};
CreateFullCalEvent(start.toISOString());
$('#calendar').fullCalendar('unselect');
},
height: 'parent',
events: function (start, end, timezone, callback) {
$.ajax({
type: "GET",
contentType: "application/json",
url: "GetEventData",
dataType: "JSON",
success: function (data) {
var events = [];
$.each(data, function (i, data) {
events.push(
{
title: data.title,
start: moment(data.start),
end: moment(data.end),
allDay: true,
backgroundColor: data.color,
id: data.id,
textColor: data.textColor
}
);
});
callback(events);
}
})
},
nextDayThreshold: '00:00:00',
editable: true,
droppable: true,
nowIndicator: true,
eventClick: function (info) {
GetFullCalEventByID(info);
},
eventDrop: function (info) {
console.log(info);
UpdateFullCalEvent(info.id, info.start.toISOString(), info.end.toISOString());
},
eventResize: function (info) {
UpdateFullCalEvent(info.id, info.start.toISOString(), info.end.toISOString());
}
})
}
function CreateFullCalEvent(start) {
window.location.href = "CreateFullCalEvent?start=" + encodeURIComponent(start);
}
function GetFullCalEventByID(eventinfo) {
$.ajax({
type: "GET",
url: "GetFullCalEventByID/" + eventinfo.id,
dataType: "JSON",
contentType: "applicaton/json; charset=utf-8",
success: function (eventdetails) {
showModal('Event Details', eventdetails, true);
}
});
}
function UpdateFullCalEvent(id, start, end) {
var object = {};
object.id = id;
object.start = start;
object.end = end;
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "UpdateFullCalEvent/",
dataType: "JSON",
data: JSON.stringify(object)
});
}
function showModal(title, body, isEventDetail) {
$("MyPopup .modal-title").html(title);
if (isEventDetail == null) {
$("#MyPopup .modal-body").html(body);
$("#MyPopup").modal("show");
}
else {
var title = 'Title: ' + body.title + '</br>';
var details = 'Details: ' + body.details + '</br>';
var date = 'Date: ' + moment(body.start).format("M/D/YYYY") + '</br>';
var empName = 'Employee: ' + body.employeeName + '</br>';
url = 'Location: ' + body.url + '</br>';
var modalPop = $("#MyPopup .modal-body");
modalPop.html(title + details + date + empName + url);
$("#MyPopup.modal").modal("show");
}
}
关于第 16 到 21 行的问题。即使我根本不调用函数,它也会发生。如果我只是像下面那样做一个弹出模式,我仍然可以看到它突出显示并选择了错误的日期:
selectable: true,
select: function () {
showModal('Create an Event', 'Create new Event feature coming soon. For now, use create button in list view', null);
CSS 是问题所在。我有
body {
zoom: 110%;
}
显然 fullCalendar 对 CSS 的缩放功能反应不佳。如果用户在浏览器中放大,这不是问题。