18

JQuery Datepickerの日付を変更すると、日付が更新されないという苦情がかなりの数のクライアントにありました...これは、月/年を変更し、1つを選択せず​​に日付を更新することを期待しているためです。

そこで、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/

4

1 に答える 1

29

最も簡単な解決策(デモを参照)は、Dateオブジェクトを使用して新しい日付を設定することです。

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

細かいマニュアルから:

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日から始めて、1か月先に進むと、同様の問題が発生します。6月30日から始めて、1か月前に戻ろうとすると、わずかに異なる問題が発生します。読者の練習問題として残しておきます。

于 2012-05-01T04:29:53.510 に答える