2

我正在寻找一种将参数添加到 jQuery UI Datepicker 中的日期的方法。我正在使用 Datepicker 来显示课程开始日期。我需要的参数是在该特定日期开始的课程的 ID。

我正在像这样初始化日期选择器:

$( "#datepicker" ).datepicker({
    dateFormat: 'dd-mm-yy',
    showWeek: true,
    firstDay: 1,
    numberOfMonths: 3,
    beforeShowDay: enableAllTheseDays
});

函数 enableAllTheseDays 如下所示:

function enableAllTheseDays(date) {
    var m = ('0'+parseInt(date.getMonth()+1)).slice(-2),
        d = ('0'+date.getDate()).slice(-2),
        i y = date.getFullYear();
    for (i = 0; i < enabledDays.length; i++) {
        if($.inArray((d + '-' + (m) + '-' + y).toString(),enabledDays) != -1) {
            return [true];
        }
    }
    return [false];
}

enabledDays 数组包含所有启用的日期,日历的其余部分被禁用。此外,我在每个日期都添加了一个带有课程 ID 的数组。

我想我需要在 enableAllTheseDays 函数中进行更改,但我无法弄清楚如何访问基础日期对象,以便我可以将课程 ID 作为属性插入到各个启用的日期。这样,我可以在选择日期后将课程 ID 作为参数传递给输入字段。

感谢您的任何见解。

4

1 回答 1

2

这是我对 datepicker 使用 onSelect 方法的尝试。

我没有更新底层的 Date 对象,只是在“结果”输入字段中添加了一个新的数据属性。在选择时,它会搜索一个名为 course 的对象(代表您的课程 ID 和日期列表)以查找与所选日期匹配的对象。

使用 firebug/developer 工具检查输入字段以查看 data-course-id 属性更新。本月的前 3 天有相关课程...

http://jsfiddle.net/Seandeburca/qbLwD/

var input = $("#datepicker");
var result = $("#result");

var courses = {
    "01-09-2013" : "javascript",
    "02-09-2013" : "history",
    "03-09-2013" : "biology",
    "10-09-2013": "physics"
};

input.datepicker({
   dateFormat: 'dd-mm-yy',
   showWeek: true,
   firstDay: 1,
   numberOfMonths: 3, 

   onSelect: function(dateText, pickerObj){

     result.attr("data-course-id", courses[dateText]); 
     course.innerHTML = courses[dateText]; 
   },

   altField: "#result"
});
于 2013-09-02T22:01:29.220 回答