[英]How do I to get the canonicalized min/max values in jQuery UI's datepicker's beforeShow method?
我有一对要用作范围的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代码中已经有一些东西必须对default / min / maxDate(大概是Date对象)的输入进行规范化,这对我来说没有什么办法可以访问已经规范化的值(而不是像我到目前为止所做的那样严重地重新发明了轮子)?
好吧,我抓住了未缩小的jquery-ui源并对其进行了搜索,据我所知,它似乎没有将规范化的日期保留在任何地方,它会在需要时重新计算它们。 似乎有一个“私有”函数_determineDate
,您可以访问该函数以进行规范化,但是显然这并不是面向未来的。 无论如何为了完整性,这里是:
var rawvalue = $( '#other' ).datepicker('option', 'minDate');
var asDate = $.datepicker._determineDate(inst, rawvalue, null);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.