【问题标题】:datepicker ui onChangemonthyear runs before beforeshowdaydatepicker ui onChangemonthyear 在 beforeshowday 之前运行
【发布时间】:2013-09-30 14:35:42
【问题描述】:

我使用 jquery Datepicker ui。 (http://jqueryui.com/datepicker/)

当我从 ajax 回来时,我想给日子上色。

我有这个:

     $(document).ready(function()
    {
        getAllDays();
        $("#datepicker").datepicker({
            changeMonth: true,
            changeYear: true,
            onChangeMonthYear: getAllDays,
            beforeShowDay: highlightDays,
            dateFormat: 'DD, d MM, yy',
            altField: '#date_due',
            altFormat: 'yy-mm-dd',
            firstDay: 1
        });
    });

作为日期选择器。现在的问题是我在 getAllDays 函数中为我的日子着色,我在 highlightDays 函数中为日子着色。但是 highlightdays 在 getAllDays 之前运行,所以月份的颜色不正确(颜色像上个月)

如果需要,这些是 2 个功能:

      function getAllDays(year, month) {


        $.ajax({
            async: false,
            cache: false,
            url: "AantalUrenAjax?_d" + (new Date().getTime()) + "&jaar=" + year + "&maand=" + month,
            dataType: "json",
            success: function(data) {
                // loop over dayUsage array result
                $.each(data, function(index, value) {
                    // add to different arrays depending on how much time is allocated in estimates

                    enabledDays.push(value);

                });



            }
        });

    }

      function highlightDays(date) {

        for (var i = 0; i < enabledDays.length; i++) {

            // console.log((enabledDays[i].jaar,enabledDays[i].maand,enabledDays[i].dag).toString());

            if (new Date(enabledDays[i].Jaar, enabledDays[i].Maand, enabledDays[i].Dag).toString() === date.toString()) {
                textdisplay = "Er zijn nog " + enabledDays[i].aantalafspraken.toString() + " Vrije afspraken";
                switch (true) {
                    case (enabledDays[i].aantalafspraken < 1):
                        return [true, "Volzet", textdisplay];
                        break;
                    case (enabledDays[i].aantalafspraken < 3):
                        return [true, "BijnaVolzet", textdisplay];
                        break;
                    default:
                        return [true, 'Vrij', textdisplay];
                }

            }

        }

        return [true, ''];






    }

我现在尝试修复这个问题 20 小时,但我无法修复它:(

【问题讨论】:

    标签: javascript jquery ajax jquery-ui datepicker


    【解决方案1】:

    您是否尝试将您的重要日子移到您的 getAllDays 函数的成功回调中?

    success: function(data) {
        // loop over dayUsage array result
        $.each(data, function(index, value) {
            // add to different arrays depending on how much time is allocated in estimates
    
            enabledDays.push(value);
    
        });
    
        highlightDays...
    
    }
    

    【讨论】:

    • 你不能这样做。 HighlightDays 获取一个日期(beforeShowDay 为您提供日历中的每个日期 1 到 1,因此此函数可以运行 30-31 次)。和 Onchangemonthyear 运行一次。所以这行不通
    猜你喜欢
    • 2017-02-21
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 2011-05-09
    • 2017-12-12
    • 2012-03-10
    相关资源
    最近更新 更多