ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

【jQuery】年と月からうるう年も計算した日を出力する

スポンサードリンク

この方の参考にしました(というかまるパクリリスペクト)

d.hatena.ne.jp

jQueryしか使え無いわたしはjQueryに書きかえる

$('#birthDayYear,#birthDayMonth').on({
    change : function() {
        // 要素取得と初期化
        var dateSelect = $('#birthDayDate');
        dateSelect.empty();

        var y = $('#birthDayYear').val();
        var m = $('#birthDayMonth').val();

        // 閏年判定
        if (2 == m && (0 == y % 400 || (0 == y % 4 && 0 != y % 100))) {
            var last = 29;
        } else {
            var last = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)[m - 1];
        }

        //  日の要素生成
        var options = [];
        last += 1;
        for (var i = 1; i < last; i++) {
            var option = $('<option>').attr('value', i).text(i);
            options.push(option);
        }
        dateSelect.append(options);
    }
});

$('#birthDayYear,#birthDayMonth,#birthDayDate').on({
    change : function() {
        var y = $('#birthDayYear').val();
        var m = $('#birthDayMonth').val();
        var d = $('#birthDayDate').val();
        $('#userBirthDayString').val(y + '/' + m + '/' + d);
    }
})

view側はこんな感じ

<select id="birthDayYear">
    <option value="2015">2015</option>
    <option value="2014">2014</option>
    <option value="2013">2013</option>
    <option value="2012">2012</option>
    <option value="2011">2011</option>
    <option value="2010">2010</option>
</select><select id="birthDayMonth">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
</select><select id="birthDayDate">
</select><input type="hidden" id="userBirthDayString" name="userBirthDayString" value="1900/01/01">

うるう年判定ってこんなにシンプルなのね。。。すごい。 ありがたやーありがたやーm(_ _ )m