jQuery datepicker有一个奇怪的问题。在Chrome,FF中可以正常工作,但在Internet Explorer中它可以像附加图像一样呈现,甚至是IE 11,就像你没有日历一样。
渲染出这样的内容时没有控制台错误,我正在初始化:
$('.customDateInput').each(function (idx) {
var $this = $(this);
var defaultDate = $this.attr("value").replace(/-/g, ",");
var $datepicker = $this.parent().find(".datepicker");
var $spanElement = $this.parent().find(".datepicker-button span");
(function (picker, altField, defaultDate, spanElement) {
picker.datepicker({
yearRange: "c-75:c+10",
firstDay: 1,
dateFormat: 'D, d M yy',
changeMonth: true,
changeYear: true,
altField: altField,
altFormat: 'yy-mm-dd',
defaultDate: new Date(defaultDate),
onClose: function(dateText, inst) {
if (dateText) {
spanElement.html('<strong>'+dateText+'</strong>');
}
}
});
})($datepicker, $this, defaultDate, $spanElement);
});
$('.datepicker-button').click(function(){
$(this).parent().find(".datepicker").datepicker('show');
});
只是寻找有关我如何调试此内容的提示!
答案 0 :(得分:0)
好的我终于想通了,问题在于传递了默认日期,因为IE中有以下警告,其中NaN打破了日历。
鉴于defaultDate
将是&#39; 2014,12,18&#39;保存日期或&#39;&#39;没有约会:
new Date('')
// NaN&lt; - Chrome返回无效日期,不会中断日历new Date('2014,12,18')
// NaN&lt; - Chrome返回&#39; 2014年12月18日星期四&#39; new Date(null)
// Thu Jan 1 00:00:00 UTC 1970 new Date(undefined)
// NaN new Date(2014,12,18)
// 1月18日星期日(因为JS考虑从0-11开始的几个月)解决方案是使用新的Date()参数:
new Date()
//预期的当前日期new Date(2014, 11, 18)
// 2014年12月18日如预期-
$('.customDateInput').each(function (idx) {
var $this = $(this);
var defaultDate = $this.attr("value").replace(/-/g, ",");
var $datepicker = $this.parent().find(".datepicker");
var $spanElement = $this.parent().find(".datepicker-button span");
(function (picker, altField, defaultDate, spanElement) {
/** Solution to issue **/
if(defaultDate) {
defaultDate = defaultDate.split(',');
defaultDate = new Date(defaultDate[0], defaultDate[1] - 1, defaultDate[2]);
} else {
defaultDate = null;
}
/** End of solution **/
picker.datepicker({
yearRange: "c-75:c+10",
firstDay: 1,
dateFormat: 'D, d M yy',
changeMonth: true,
changeYear: true,
altField: altField,
altFormat: 'yy-mm-dd',
defaultDate: new Date(defaultDate),
onClose: function(dateText, inst) {
if (dateText) {
spanElement.html('<strong>'+dateText+'</strong>');
}
}
});
})($datepicker, $this, defaultDate, $spanElement);
});
$('.datepicker-button').click(function(){
$(this).parent().find(".datepicker").datepicker('show');
});