この方の参考にしました(というかまるパクリリスペクト)
$('#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