解析日期选择器的日期以显示事件日期
Parse date for datepicker to show event dates
好的,所以我想要实现的是将日期数解析到日期选择器中,然后显示它。简单的 。我可以为 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);
对于第二种方法,Firefox 的日期即将到来,但不会显示在日期选择器中。但它适用于 chrome。呃。对 firefox 的任何建议。
有什么帮助吗?如果我迷路了,请告诉我。
更新
因此,datepicker 有自己的方法来解析日期。我在上面的例子中展示了一些奇怪的对象字符串,但是从这里获取将使用 datepicker 解析方法。
您正在创建一个以日期对象作为键和值的对象,这是一个非常奇怪的对象,但是以这种方式比较日期对象在理论上应该可行,因为在它们上调用了 toValue
,但它仍然有点奇怪。
另外,jQuery 的日期选择器有一个内置的方法来解析日期,这与 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';
}
});
好的,所以我想要实现的是将日期数解析到日期选择器中,然后显示它。简单的 。我可以为 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);
对于第二种方法,Firefox 的日期即将到来,但不会显示在日期选择器中。但它适用于 chrome。呃。对 firefox 的任何建议。
有什么帮助吗?如果我迷路了,请告诉我。
更新
因此,datepicker 有自己的方法来解析日期。我在上面的例子中展示了一些奇怪的对象字符串,但是从这里获取将使用 datepicker 解析方法。
您正在创建一个以日期对象作为键和值的对象,这是一个非常奇怪的对象,但是以这种方式比较日期对象在理论上应该可行,因为在它们上调用了 toValue
,但它仍然有点奇怪。
另外,jQuery 的日期选择器有一个内置的方法来解析日期,这与 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';
}
});