我有不少客户抱怨他们在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 );
}
});
答案 0 :(得分:27)
最简单的解决方案(参见demo)是使用Date对象设置新日期:
onChangeMonthYear:function(y, m, i){
var d = i.selectedDay;
$(this).datepicker('setDate', new Date(y, m - 1, d));
}
来自fine manual:
<强>的setDate(日期)强>
[...]
的日期强>
键入:字符串或日期
新的日期。
但是您要在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日开始尝试回去一个月,会出现稍微不同的问题。我将把它作为读者的练习。