我有一对datepicker对象,我想作为一个范围,所以在"低"中设置一个值。一个调整minDate(和yearRange)在另一个中,类似于" maxDate"在另一个。问题是我得到的类型似乎可以是日期或字符串或数字或???所以我无法使用它来设置其他值。以下代码段:
$(document).ready(function() {
$( '#from' ).datepicker({ /* the "low" datepicker */
showOn: 'button',
changeMonth: true,
changeYear: true,
defaultDate: null,
minDate: new Date(2009,0,1),
maxDate: null,
buttonImageOnly: true,
buttonImage: '/img/calendar_icon_20x20.png',
buttonText: 'select date from calendar',
dateFormat: 'dd-M-yy',
beforeShow:
function ( inp, inst ) {
var v;
var o = {};
var miny = new Date(inst.settings.minDate).getFullYear();
var maxy = new Date(inst.settings.maxDate).getFullYear();
v = $( '#thru' ).val(); /* the "high" datepicker */
if (v == '') {
v = $( '#thru' ).datepicker('option', 'maxDate');
}
if (typeof v == 'object') {
o.maxDate = v;
} else {
o.maxDate = $.datepicker.parseDate('dd-M-yy', v.trim());
}
maxy = o.maxDate.getFullYear();
o.yearRange = miny + ':' + maxy;
return o;
}
});
});
我认为我需要添加一个if (typeof v == 'number') {..}
部分并尝试从数字天数偏移计算一个日期,然后我仍然要担心如果我得到一个字符串,它不与dateFormat匹配,因此解析将失败。我假设datepicker代码中有一些东西已经不得不这样做默认/ min / maxDate的输入规范化(可能是一个Date对象)并没有某种方式让我访问已经规范化的值(而不是像我迄今为止那样严重地重新发明轮子?)
答案 0 :(得分:0)
好吧,我抓住了未经缩小的jquery-ui来源,并通过它进行了搜索,尽可能地告诉它不似乎将规范化的日期保留在任何地方,它重新计算他们每次需要它们。似乎有一个"私人"函数_determineDate
,你可以访问它来进行规范化,但这显然不是非常适合未来的。无论如何,为了完整性,这里是:
var rawvalue = $( '#other' ).datepicker('option', 'minDate');
var asDate = $.datepicker._determineDate(inst, rawvalue, null);