javascript - jQuery 日期选择器使用 Ajax 更新可用日期

标签 javascript jquery ajax json

尝试在 #tour_region 字段更改后动态更新 jQuery Datepicker。我从 Salman 的 Web 博客中获取了这段代码,并将 CSS 标识符更改为我的,显然还更改了 Ajax 调用的 url。

当我构建 JSON 响应时,我使用 .ajax 调用对其进行了测试,但 Salman 有一个 .getJSON 调用。

我收到的错误是: “未捕获类型错误:无法读取未定义的属性‘条目’”

让我觉得 JSON 响应可能有问题。我对 .getJSON 调用不太熟悉。

提前致谢。

$(document).ready(function(){
    $(function() {
        var dateList = null;
        var date1 = new Date;
        date1.setHours(0, 0, 0, 0);
        date1.setDate(1);
        var date2 = new Date;
        date2.setHours(0, 0, 0, 0);
        date2.setMonth(date2.getMonth() + 12, 0);
        $("form #date").datepicker({
            minDate: date1,
            maxDate: date2,
            beforeShowDay: function(date) {
                var r = [true, ""];
                if (dateList === null) {
                    r[1] = "dp-highlight-unknown";
                } else {
                    var key = $.datepicker.formatDate("yy-mm-dd", date);
                    if (key in dateList) {
                        r[1] = "dp-highlight-available";
                        r[2] = dateList[key].join(", ");
                    }
                }
                return r;
            }
        });
        $("#tour_region").on("change", function(){
            var region = $(this).val();
            $.getJSON("/dates?region=" + region, {
                "alt": "json",
                "start-min": $.datepicker.formatDate("yy-mm-dd", date1),
                "start-max": $.datepicker.formatDate("yy-mm-dd", new Date(date2.getTime() + 86400000)),
                "orderby": "starttime",
                "max-results": 100
            }, function(data) {
                dateList = {};
                $.each(data.feed.entry, function(i, entry) {
                    var key = entry.gd$when[0].startTime.substr(0, 10);
                    if (key in dateList == false) {
                        dateList[key] = [];
                    }
                    dateList[key].push(entry.title.$t);
                });
                $("form #date").datepicker("refresh");
            });
        });
    });
});

最佳答案

这允许日期选择器仅显示从 .getJSON 返回的日期。谢谢大家。

 var dateList = null;
  $(function() {    
  var date1 = new Date;
  date1.setHours(0, 0, 0, 0);
  date1.setDate(1);

var date2 = new Date;
date2.setHours(0, 0, 0, 0);
date2.setMonth(date2.getMonth() + 12, 0);

$("form #date").datepicker({
    minDate: date1,
    maxDate: date2,
    beforeShowDay: function(date) {                 
        var r = [false, ""];
        if (dateList === null) {
            r[1] = "dp-highlight-unknown";
        } else {
            var key = $.datepicker.formatDate("yy-mm-dd", date);                        
            if ($.inArray(key, dateList) != -1) {
                r[0] = true;                            
                r[1] = "dp-highlight-available";                            
            }
        }
        return r;
    }
}); 

$("#tour_region").on("change", function(){
    var region = $(this).val();
    $.getJSON("/dates?region=" + region, {
        "alt": "json",
        "start-min": $.datepicker.formatDate("yy-mm-dd", date1),
        "start-max": $.datepicker.formatDate("yy-mm-dd", new Date(date2.getTime() + 86400000)),
        "orderby": "starttime",
        "max-results": 100
    }, function(data) {
        console.log(data);
        dateList = [];
        $.each(data, function(i, entry) {               
            if ($.inArray(entry, dateList) == -1) {
                dateList.push(entry);
            }               
        });
        $("form #date").datepicker("refresh");
    });
 });        
});

关于javascript - jQuery 日期选择器使用 Ajax 更新可用日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29703720/

相关文章:

asp.net - 选项卡导航 - 框架还是 AJAX?

javascript - 如何使用 jQuery 检查 CSS 中是否存在类

javascript - 如何生成 jQuery 片段

javascript - YUI 是否按指定顺序组合多个 JS 文件?

php - 没有图像,也没有弹出窗口

javascript - 让我的后退和前进按钮与 ajax 一起工作

javascript - 如何将普通表转换为 CkEditor 表

jquery - highcharts 单击时更改渲染图像源

javascript - jQuery,根据数组检查类

jquery - 水平溢出不起作用