0

我正在链接一系列事件,这些事件可以在我的日期选择器日历上单击。我的日期格式对于该onSelect功能正常工作(它是 dd-mm-yy)。所以我可以点击并阅读日历上 08/06/2013(以便 2013 年 6 月 8 日)上的活动。

beforeshowday另一方面,将类“highlight”分配给元素的函数使用了错误的日期格式(它切换 dd 和 mm)。因此,td日历上突出显示的 's 显示在错误的月份,而不是可点击和工作活动td的。

请看我的代码:

var acts = [
    { Title: "En we doen eki wild", Date: new Date("08/06/2013"), Description: "Beschrijving van deze activiteit komt hier te staan" },
    { Title: "Zotte petanque!", Date: new Date("10/06/2013"), Description: ".. en van deze hier" },
    { Title: "Les :-(", Date: new Date("11/06/2013"), Description: "Beschrijving van activiteit" }
];

$("#cal").datepicker({
    dateFormat: 'dd-mm-yy',
    beforeShowDay: function (date) {
        var result = [true, '', null];
        var matching = $.grep(acts, function (event) {
            return event.Date.valueOf() === date.valueOf();
        });

        if (matching.length) {
            result = [true, 'highlight', null];
        }
        return result;
    },
    onSelect: function(dateText) {
        var date,
            selectedDate = new Date(dateText),
            i = 0,
            event = null;

        while (i < acts.length && !event) {
            date = acts[i].Date;

            if (selectedDate.valueOf() === date.valueOf()) {
                event = acts[i];
            }
            i++;
        }
        if (event) {
            $("#acts h3").html(event.Title);
            $("#acts h4").html(event.Date);
            $("#acts .maintext").html(event.Description);
        }
    },
    minDate: 1,

});

有人知道我应该如何解决这个问题吗?谢谢!

JSFiddle 示例:http: //jsfiddle.net/JT3hp/

4

1 回答 1

0

我不认为 javascript 解析器理解新的 Date("08/06/2013") 格式。创建一个新的解析函数来正确解析它:

...
{ Title: "En we doen eki wild", Date: parseDate("08/06/2013"), Description: "Beschrijving van deze activiteit komt hier te staan" },
...

// parse a date in dd-mm-yyyy format
function parseDate(input) {
  var parts = input.match(/(\d+)/g);
  return new Date(parts[2], parts[1]-1, parts[0]);
}

valueOf() 方法对我来说也有问题。

    var matching = $.grep(acts, function (event) {
        return event.Date.toString() === date.toString();
    });

    ...

        if (selectedDate.toString() === date.toString()) {
           event = acts[i];
        }

    ...

另外我认为javascript解析器在onSelect中出现dd-mm-yy失败,因此您需要再次手动解析它。

这是使用 IE、Chrome 和 Firefox 测试的小提琴:

http://jsfiddle.net/JT3hp/6/

于 2013-05-29T08:52:50.813 回答