閏年と月末の日付を変更するjs。ひとまず試作
(function ($) {
$(function () {
var changeStatus = false;
var date = new Date();
var year = date.getFullYear();
var month = "0" + (date.getMonth() + 1);
var day = date.getDate();
createDay();
$('#stayYear, #stayMonth').change(function () {
createDay();
});
/**
* selectの日付を現在の日付にに設定
*/
$('#stayYear').val(year);
$('#stayMonth').val(month);
$('#stayDay').val(day);
function createDay() {
var date = new Date();
var y;
var m;
// ロード直後は現在の年月、change後はセレクトされた年月を変数に入れる
if (!changeStatus) {
y = year;
m = date.getMonth() + 1;
} else {
y = document.getElementById('stayYear').options[document.getElementById('stayYear').selectedIndex].text;
m = document.getElementById('stayMonth').options[document.getElementById('stayMonth').selectedIndex].text;
}
// 値がchangeされたかのフラグ
changeStatus = true;
// 閏年、月末日にち判定
var last;
if (2 == m && (0 == y % 400 || (0 == y % 4 && 0 != y % 100))) {
last = 29;
} else {
last = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][m - 1];
}
// 要素取得と初期化
var obj = document.getElementById('stayDay');
obj.length = 0;
// 日の要素生成
for (var i = 1; i < last + 1; i++) {
if (i < 10) {
i = ( '0' + i ).slice(-2);
}
obj.options[obj.length++] = new Option(i, i);
}
}
});
})(jQuery);