【问题标题】:Jquery UI Datepicker: Highlight firstJquery UI Datepicker:首先突出显示
【发布时间】:2017-01-05 05:49:12
【问题描述】:

如果 var express 为真,我想在前 3 个可选天添加一个类。

以下代码有效,但如果我选择删除类的日期

$datepicker.datepicker({
        dayNamesMin: ["S", "M", "D", "M", "D", "F", "S"],
        beforeShowDay:$.datepicker.noWeekends,
        firstDay: 1,
        minDate: d,
        dateFormat: "dd.mm.yy",
        onSelect: function (dateText, inst) {

            $('.delivery-date').text(dateText);

            var printReleaseDateParts =dateText.split('.');
            var printReleaseDate = new Date(printReleaseDateParts[2],printReleaseDateParts[1]-1,printReleaseDateParts[0]);
            printReleaseDate.setDate(printReleaseDate.getDate() - printRelease);
            $('.print-release-date').text($.datepicker.formatDate('dd.mm.yy', printReleaseDate));
            $datepicker.removeClass('express');
            if (express) {
                $datepicker.addClass('express');
                $('*[data-handler="selectDay"]:lt(3)').addClass('express');
            } else {
                $datepicker.removeClass('express');
                $('*[data-handler="selectDay"]:lt(3)').removeClass('express');

            }

        },
        onChangeMonthYear: function(){
            console.log('onChangeMonthYear');

        }
    });

var express 由复选框设置。最后,如果选中该复选框,用户应该能够选择突出显示的快递交货日期。 express-delivery-date 是在常规启动的第一个可选日期前 3 天。第一个可选日期由更改复选框更改

$('input:checkbox[name=option-express]').change(function () {
            if ($(this).prop("checked") == true) {
                $datepicker.addClass('express');
                var d = calculateMinDate(deliveryExpress);
                $datepicker.datepicker("option", "minDate", d);
                $('*[data-handler="selectDay"]:lt(3)').addClass('express');

                express = true;


            } else {
                $datepicker.removeClass('express');
                var d = calculateMinDate(deliveryRegular);
                $datepicker.datepicker("option", "minDate", d);
                $('*[data-andler="selectDay"]:lt(3)').removeClass('express');

                express = false;
            }
        });

只应突出显示工作日。

那么突出第一天的最佳做法是什么?

编辑:

现在我为 beforeShowDay 实现了一个自定义函数,但没有运气。 console.log 被触发了四次,但没有添加类。

var expressDates = ["08/29/2016", "08/30/2016", "08/31/2016", "09/01/2016"];
function expressDays(date) {
            var noWeekend = $.datepicker.noWeekends(date);
            if (noWeekend[0] && express) {
                for (var i = 0; i < expressDates.length; i++) {
                    if (new Date(expressDates[i]).toString() == date.toString()) {
                        console.log('express day!')
                        return [true, 'express', 'Express'];
                    }
                }
                return [true, ''];
            } else {
                return noWeekend;
            }
        }

【问题讨论】:

    标签: jquery user-interface datepicker


    【解决方案1】:

    好的,我自己想通了。我修改了 beforeShowDay 的函数。我将我的明确日期放在一个数组中并用 $.inArray() 进行检查

    function expressDays(date) {
                var noWeekend = $.datepicker.noWeekends(date);
                var expressDates = [];
                for (var i = 0; i < deliveryExpress-1; i++) {
                    expressDates.push(moment($datepicker.datepicker("option", "minDate")).businessAdd(i).format('L'))
                }
    
                if (noWeekend[0] && express) {
                    var dateString = $.datepicker.formatDate('mm/dd/yy', date);
                    if($.inArray(dateString,expressDates) >=0){
                        return [true, 'express', 'Express'];
                    }else{
                        return [true, 'noexpress'];
                    }
                } else {
                    return noWeekend;
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 2012-04-27
      • 2012-12-11
      • 2012-03-11
      • 1970-01-01
      相关资源
      最近更新 更多