回答編集履歴

2

仕様具体化に伴いコード追加

2017/09/02 09:13

投稿

Tomak
Tomak

スコア1652

test CHANGED
@@ -4,34 +4,106 @@
4
4
 
5
5
  ```js
6
6
 
7
- var time = new Date();
7
+ var time = new Date();
8
8
 
9
- var year = time.getFullYear();
9
+ var year = time.getFullYear();
10
+
11
+ var month = time.getMonth() + 1;
12
+
13
+ var today = time.getDate();
14
+
15
+ var lastDate = new Date(year, month, 0); // 今月の最終日
10
16
 
11
17
  var selected = ' selected="selected"';
12
18
 
13
19
 
14
20
 
21
+ var i;
22
+
23
+
24
+
15
- for (var i = year; i >= 1900; i--) {
25
+ for (i = year; i <= year + 5; i++) {
16
26
 
17
27
  $('#year').append('<option value="' + i + '"'+ (i == year ? selected : '') +'>' + i + '</option>');
18
28
 
19
29
  }
20
30
 
21
- for (var i = 1; i <= 12; i++) {
31
+ for (i = month; i <= 12; i++) {
22
32
 
23
- $('#month').append('<option value="' + i + '"'+ (i == time.getMonth() ? selected : '') +'>' + i + '</option>');
33
+ $('#month').append('<option value="' + i + '"'+ (i == month ? selected : '') +'>' + i + '</option>');
24
34
 
25
35
  }
26
36
 
27
- for (var i = 1; i <= 31; i++) {
37
+ for (i = today; i <= lastDate; i++) {
28
38
 
29
- $('#day').append('<option value="' + i + '"'+ (i == time.getDate() ? selected : '') +'>' + i + '</option>');
39
+ $('#day').append('<option value="' + i + '"'+ (i == today ? selected : '') +'>' + i + '</option>');
30
40
 
31
41
  }
42
+
43
+
44
+
45
+ // 年セレクトボックス変更時イベント
46
+
47
+ $('body').on('change', '#year', function (e) {
48
+
49
+ var $year = $(e.target);
50
+
51
+ var $month = $('#month');
52
+
53
+ var $date = $('#day');
54
+
55
+
56
+
57
+ var slectedMonth = $month.val();
58
+
59
+ var slectedDate = $date.val();
60
+
61
+
62
+
63
+ $month.empty();
64
+
65
+ $date.empty();
66
+
67
+
68
+
69
+ // 年が今年なら
70
+
71
+ if (yaer == $year.val()) {
72
+
73
+ for (i = month; i <= 12; i++) {
74
+
75
+ $month.append('<option value="' + i + '"'+ (i == slectedMonth ? selected : '') +'>' + i + '</option>');
76
+
77
+ }
78
+
79
+ for (i = today; i <= lastDate; i++) {
80
+
81
+ $date.append('<option value="' + i + '"'+ (i == slectedDate ? selected : '') +'>' + i + '</option>');
82
+
83
+ }
84
+
85
+ }
86
+
87
+ // 年が未来なら
88
+
89
+ else {
90
+
91
+ for (i = 1; i <= 12; i++) {
92
+
93
+ $month.append('<option value="' + i + '"'+ (i == slectedMonth ? selected : '') +'>' + i + '</option>');
94
+
95
+ }
96
+
97
+ for (i = 1; i <= lastDate; i++) {
98
+
99
+ $date.append('<option value="' + i + '"'+ (i == slectedDate ? selected : '') +'>' + i + '</option>');
100
+
101
+ }
102
+
103
+ }
104
+
105
+ });
32
106
 
33
107
  ```
34
108
 
35
109
 
36
-
37
- HTMLが`jquery`オブジェクトの場合はメソッドチェーンで`.prop('selected', true)`とします。

1

yearの「SELECTED」抜けを追加

2017/09/02 09:13

投稿

Tomak
Tomak

スコア1652

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  for (var i = year; i >= 1900; i--) {
16
16
 
17
- $('#year').append('<option value="' + i + '">' + i + '</option>');
17
+ $('#year').append('<option value="' + i + '"'+ (i == year ? selected : '') +'>' + i + '</option>');
18
18
 
19
19
  }
20
20