jQuery UI Datepicker使用onChangeMonthYear更新日期

前端之家收集整理的这篇文章主要介绍了jQuery UI Datepicker使用onChangeMonthYear更新日期前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有不少客户投诉他们什么时候更改日期在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 ); 
    }
});​

http://jsfiddle.net/3YQZV/

解决方法

最简单的解决方案(参见 demo)是使用Date对象设置新日期:
onChangeMonthYear:function(y,i){                                
    var d = i.selectedDay;
    $(this).datepicker('setDate',new Date(y,m - 1,d));
}

fine manual

setDate(date)
[…]
date
Type: String or Date
The new date.

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

如果他们尝试从1月31日到2月移动,你还将要决定你要做什么。你可能想去2月28日(闰年29岁)。如果从5月31日1月30日1月29日开始,并且前进一个月,类似的问题将会出现。如果您从6月30日开始并尝试返回一个月,则会出现稍微不同的问题。我会把这作为读者的练习。

猜你在找的jQuery相关文章