mochiflappe
9/23/2014 - 4:53 AM

閏年と月末の日付を変更するjs。ひとまず試作

閏年と月末の日付を変更する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);