0

我正在使用 Full Calender js 插件,到目前为止一切顺利。但我想检查开始和结束之间的选择是否有事件?

我只需要一个消息警报。基本上,如果日期选择中已经存在事件,我想阻止用户创建事件。

    $(document).ready(function () {
            var events = [];
            var selectedEvent = null;
            FetchEventAndRenderCalendar();
            function FetchEventAndRenderCalendar() {
                events = [];
                $.ajax({
                    type: "GET",
                    url: "/home/GetEvents",
                    success: function (data) {
                        $.each(data, function (i, v) {
                            events.push({
                                eventID: v.EventID,
                                title: v.EventTitle,
                                description: v.EventDescription,
                                start: moment(v.StartDate),
                                end: v.End != null ? moment(v.EndDate) : null,
                                color: v.ThemeColor,
                                allDay: v.IsFullDay
                            });
                        })

                        GenerateCalender(events);
                    },
                    error: function (error) {
                        alert('failed');
                    }
                })
            }

这是用户想要添加事件时的代码

           function openAddEditForm() {
                if (selectedEvent != null) {
                    $('#hdEventID').val(selectedEvent.eventID);
                    $('#txtSubject').val(selectedEvent.title);
                    $('#txtStart').val(selectedEvent.start.format('DD/MM/YYYY HH:mm A'));
                    $('#chkIsFullDay').prop("checked", selectedEvent.allDay || false);
                    $('#chkIsFullDay').change();
                    $('#txtEnd').val(selectedEvent.end != null ? selectedEvent.end.format('DD/MM/YYYY HH:mm A') : '');
                    $('#txtDescription').val(selectedEvent.description);
                    $('#ddThemeColor').val(selectedEvent.color);
                }
                $('#myModal').modal('hide');
                $('#myModalSave').modal();
            }

            $('#btnSave').click(function () {
                //Validation/
                if ($('#txtSubject').val().trim() == "") {
                    alert('Subject required');
                    return;
                }
                if ($('#txtStart').val().trim() == "") {
                    alert('Start date required');
                    return;
                }
                if ($('#chkIsFullDay').is(':checked') == false && $('#txtEnd').val().trim() == "") {
                    alert('End date required');
                    return;
                }
                else {
                    var startDate = moment($('#txtStart').val(), "DD/MM/YYYY HH:mm A").toDate();
                    var endDate = moment($('#txtEnd').val(), "DD/MM/YYYY HH:mm A").toDate();
                    /******condition******/
                    if (startDate > endDate) {
                        alert('Invalid end date');
                        return;
                    }
                }

                var data = {
                    EventID: $('#hdEventID').val(),
                    EventTitle: $('#txtSubject').val().trim(),
                    StartDate: $('#txtStart').val().trim(),
                    EndDate: $('#chkIsFullDay').is(':checked') ? null : $('#txtEnd').val().trim(),
                    EventDescription: $('#txtDescription').val(),
                    ThemeColor: $('#ddThemeColor').val(),
                    IsFullDay: $('#chkIsFullDay').is(':checked')
                }
                SaveEvent(data);
                // call function for submit data to the server
            })
4

1 回答 1

0

您可以尝试获取事件开始日期和结束日期的 unix 时间戳。例子:

Start                End
  |                   |
1000                2000

开始日期(unix 时间戳)为 1500 的事件将介于当前开始日期和结束日期之间。

if (startdate >= currentStartdate && startdate <= currentEnddate) {
    // startdate between current start and end date (start and end date included)
}
于 2020-05-19T20:40:29.147 回答