繁体   English   中英

如何在jQuery UI的datepicker的beforeShow方法中获取规范化的最小值/最大值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM