jQuery UI Datepicker使用onChangeMonthYear来更新日期

Ben*_*air 16 jquery jquery-ui jquery-ui-datepicker

我有不少客户抱怨他们何时更改JQuery Datepicker上的日期,它没有更新日期...这是因为他们更改月/年并期望它更新日期而不选择一个.

所以我想我会帮助他们并使用onChangeMonthYear()函数自动更新它们的日期.

我的代码如下.当我改变月份或年份时,我需要到2017年或1987年......我不明白出了什么问题.我错过了什么吗?

$('#member_birthday_full').datepicker({ 
    altField: '#member_birthday',
    altFormat: 'yy-mm-dd',
    changeMonth: true,
    changeYear: true,
    dateFormat: 'DD, d MM yy',
    showAnim: 'slideDown',
    yearRange: '-125:+0',
    onChangeMonthYear:function(y, m, i){                                
        var d = i.selectedDay + '';                       
        if (d.length < 2) 
            d = '0' + d;                       
        var m = m + '';                       
        if (m.length < 2) 
            m = '0' + m;   
        $(this).datepicker( "setDate", y + '-' + m + '-' + d ); 
    }
});?
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/3YQZV/

mu *_*ort 27

最简单的解决方案(参见演示)是使用Date对象设置新日期:

onChangeMonthYear:function(y, m, i){                                
    var d = i.selectedDay;
    $(this).datepicker('setDate', new Date(y, m - 1, d));
}
Run Code Online (Sandbox Code Playgroud)

精细手册:

setDate(date)
[...]
date
类型:字符串日期
新日期.

但是你要在中设置新的日期altFormat.然后,datepicker尽力yy-mm-dd使用DD, d MM yy格式解析日期,最终在1887年,所有人都感到茫然和困惑,并想知道你的DeLorean在哪里.

如果他们试图从1月31日搬到2月份,你也会想要决定你要做什么.你可能想要去2月28日(或闰年29).如果你从1月29日,1月30日,5月31日开始,那么类似的问题将会出现......并且向前推进一个月; 如果你从6月30日开始尝试回去一个月,会出现稍微不同的问题.我将把它作为读者的练习.