好的,我想要实现的是解析datepicker中的日期数,然后显示它。简单。我能够为chrome做,但在Firefox中我有一些问题。 日期来自这样的ajax。
var eventDates ={};
//lets take some demo entry
var dates = [{datename:'2015-04-15 10:39:57'},{datename:'2015-04-18 10:39:57'}]
jQuery.each(dates ,function(key,val){
eventDates[new Date(moment(val.datename).format('MM-DD-YYYY'))] = new Date(moment(val.datename).format('MM-DD-YYYY'));
})
console.log(eventDates);
jQuery('#calendar').datepicker({
beforeShowDay: function(date) {
var highlight = eventDates[date];
console.log(highlight);
if (highlight) {
return [true, "event", highlight];
} else {
return [true, '', ''];
}
},
onSelect: function(dateText, inst) {
location.href = '/schedule';
}
});
所以上面的解决方案适用于chrome,但是当遇到firefox未定义的日期错误时会被抛出。
我已经尝试过一些方法来解析firefox的日期,这在chrome中效果很好。
//method 1
eventDates[Date.parse(moment(val.date).format('MM-DD-YYYY'))] = Date.parse(moment(val.date).format('MM-DD-YYYY'));
//method 2
eventDates[moment(val.date)] =moment(val.date);
第二个方法日期即将发布,但是没有在datepicker中显示。但它适用于铬。呃。对firefox的任何建议。
有任何帮助吗?告诉我,如果我在某处迷路了。
更新
从这里可以看出,datepicker有自己的解析日期的方法。我在上面的例子中展示了一些奇怪的对象字符串,但是从这里可以使用datepicker parse方法。
答案 0 :(得分:1)
您正在创建一个以日期对象作为键和值的对象,这是一个非常奇怪的对象,但是比较日期对象应该在理论上以toValue
为基础进行调用,但是它会被调用。还是有点奇怪。
此外,jQuery的datepicker有一个内置的方法来解析与Moment基本相同的日期。
重写它看起来像这样
var dates = [{
'date': '2015-04-15 10:39:57'
}, {
'date': '2015-04-18 10:39:57'
}]
var eventDates = jQuery.map(dates, function (val) {
return $.datepicker.parseDate('yy-mm-dd', val.date.split(' ').shift()).getTime();
});
jQuery('#calendar').datepicker({
beforeShowDay: function (date) {
return eventDates.indexOf(date.getTime()) != -1 ? [true, "event", date] : [true, '', '']
},
onSelect: function (dateText, inst) {
location.href = '/schedule';
}
});