1

我有一个完整的日历和数据表来执行一些功能。我有一个完整的日历、几个按钮和一个数据表来突出显示选定的日期。

起初,我有 2 个单独的按钮'Working day','off day'。如果我单击“休息日”按钮并在完整日历上选择特定日期(单元格),则必须更改该单元格背景并将所选日期添加到我的数据表中。同样,如果我选择“工作日”按钮,然后单击选定的休息日单元格,则单元格的颜色必须变回白色,并且必须从我的数据表中删除数据。这个对我来说很好用。

我还有一个按钮“加载日历”来突出显示选定年份的所有星期日,并将这 52 个数据添加到我的数据表中。这也对我有用。

问题是,在选择了一年之后,我需要添加单独的“休息日”按钮,或者需要删除几个突出显示的星期日到工作日——当我这样做时,只有日历单元格的颜色发生了变化——数据没有从数据中删除表,并且在多次单击“关闭/工作日”按钮时将重复数据添加到数据表中。

按钮代码:

 <div class="btn-group">
     <a id="btnWorkingDay" name="btnWorkingDay" class="@*external-event*@ btn btn-block btn-default btn-flat"><span class="hide-on-mobile">Working Day </span></a>
 </div>
 <div class="btn-group">
     <a id="btnOffDay" name="btnOffDay" style="background-color:#1BBF2A;color:white" class="btn btn-block #1BBF2A btn-flat"><span class="hide-on-mobile">Off Day </span></a>
 </div>

**Code for full calendar:**

<div class="box-body no-padding">
    <div id="calendar_full"></div>
</div>

按钮加载全年的代码:

<div class="btn-group">
    <a id="btnLoadCalendar" name="btnLoadCalendar" onclick="LoadCalendar1()" class="btn btn-block btn-success btn-flat"><span class="hide-on-mobile">Load Calendar </span><i class="fa fa-calendar"></i></a>
</div>

数据表代码:

 <table cellspacing="1" cellpadding="2" style="width: 100%;" id="CalendarSelection" class="table table-striped table-hover table-bordered table-hd">
<thead>

    <tr class="gridheader">
        <td valign="middle" align="center" style="width: 2%;"></td>
        <td style="width: 50%;" class="search_field" id="CalendarDate">Calendar Date</td>
        <td style="width: 50%;" class="search_field" id="Description">Description</td>
    </tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td></tr></tbody>
</table>

脚本:

 <script>
$(document).ready(function () {
    var t = $('#CalendarSelection').DataTable({
        "columnDefs": [{
            "searchable": false,
            "orderable": false,
            "targets": 0
        }],
       });

    t.on('order.dt search.dt', function () {
        t.column(0, { search: 'applied', order: 'applied' }).nodes().each(function (cell, i) {
            cell.innerHTML = i + 1;
        });
    });
    });

        $(function () {
            var t = $('#CalendarSelection').DataTable();
            var y = new Date().getFullYear();
            t.clear().draw();
            $('#calendar_full').fullCalendar('gotoDate', year);
             select();

            $('.fc-left').remove();
            $('.select_month').addClass('hide');
            $('.fc-today-button').addClass('hide');
            $('.fc-prev-button').addClass('hide');
            $('.fc-next-button').addClass('hide');
        });

     function select() {
            var date = new Date()

            $("#btnWorkingDay").click(function (event) {
                event.preventDefault();

                $(this).toggleClass("selected");
                $("#btnOffday").removeClass("selected");
              });
            $("#btnOffday").click(function (event) {
                event.preventDefault();

                $(this).toggleClass("selected");
                $("#btnWorkingDay").removeClass("selected");
            });     
             $('#calendar_full').fullCalendar({
                plugins: ['interaction'],
                header: {
                    center: 'title'
                },
                selectable: true,
                selectHelper: true,
                dayClick: function (date, jsEvent, view) {
                    var t = $('#CalendarSelection').DataTable();

                    if (!$("#btnWorkingDay").hasClass("selected") && !$("#btnOffday").hasClass("selected"))
                        return;

                    var cell = $(this);

                    if ($("#btnWorkingDay").hasClass("selected")) {
                        var backgroundColour = 'white';
                        var description = '';
                    } else if ($("#btnOffday").hasClass("selected")) {
                        var backgroundColour = '#1BBF2A';
                        var description = 'Half Working Day';
                    }

                    cell
                        .css('background-color', backgroundColour)
                        .text(description);
                    if (($('tr[data-date="' + cell.data('date') + '"]').length > 0)) {
                        var data = t.row($('tr[data-date="' + cell.data('date') + '"]')).data();
                        if (cell.text() == '') {
                            t.row($('tr[data-date="' + cell.data('date') + '"]')).remove().draw();
                            return
                        }
                        else {
                            t
                                .row($('tr[data-date="' + cell.data('date') + '"]'))
                                .data([
                                    null,
                                    data[1],
                                    cell.text()
                                ]);

                            return;
                        }

                    }
                   else {
                        if (cell.text() == '') {
                            if ((cell.css('background-color', '#1BBF2A'))) {
                                var data = t.row($('tr[data-date="' + cell.data('date') + '"]')).data();
                                t.row($('tr[data-date="' + cell.data('date') + '"]')).remove().draw();
                                //t.row(cell.css('background-color', backgroundColour)).remove().draw();
                                return
                            }
                            else {
                                return
                            }
                        }
                        else {
                            rowNode = t.row.add([
                                null,
                                date.format('dddd,MMMM DD,YYYY'),
                                cell.text()
                            ])
                                .draw()
                                .node();

                            $(rowNode).attr('data-date', cell.data('date'));
                        }
                    }

                }
            });
        }


         function LoadCalendar1() {
            var t = $('#CalendarSelection').DataTable();
            var date = new Date()
            var d = date.getDate(),
                m = date.getMonth(),
                y = date.getFullYear()
                 var year = $("#CalenderYear").val();
            if (year == "") {
                year = y;
            }
            else {
                year = year;
            } 
              var startdate = year + '-01-01';
            var startdate1 = new Date(startdate);
            var enddate = year + '-12-31';
            var enddate1 = new Date(enddate);
            // I skip some conditions whether to check the selected day either sunday or other days ..
             if (rr1 == 'Off Day') {
                        $('.fc-day.fc-Sun').css('backgroundColor', '#1BBF2A').text(rr1);
                    }

                    var arr = [];
                    for (i = startdate1; i < enddate1; i.setDate(i.getDate() + 1)) {
                        var New_SDate = i.getDay();
                           arr.push(([
                                null,
                                moment(i).format("dddd,MMMM DD,YYYY"),
                                rr2

                            ]));
                    }
                     for (k = 0; k < arr.length; k++) {
                        t.row.add([
                            null,
                            arr[k][1],
                            arr[k][2]
                        ]).draw();
                    }
            }
    </script>

由于我的代码太长,我编辑并给出了与问题相关的选定代码,所以如果打开右括号/括号丢失仅意味着拼写错误。我哪里做错了?请帮忙。

4

0 回答 0