teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記2

2016/10/12 07:24

投稿

yambejp
yambejp

スコア117914

answer CHANGED
@@ -105,4 +105,107 @@
105
105
  <td>28</td>
106
106
  </tr>
107
107
  </table>
108
- ```
108
+ ```
109
+
110
+ # 追記2
111
+ ```javascript
112
+ $(function(){
113
+ $('#t1 tr').each(function(){
114
+ var td=$(this).find('td');
115
+ td.on('click',function(){
116
+ $(this).toggleClass('selected');
117
+ if($(this).not('.selected').length==1){
118
+ $('.js-dow').eq(td.index(this)).prop('checked',false);
119
+ $('#selectWeekdays').prop('checked',false);
120
+ }
121
+ });
122
+ });
123
+ $('.js-dow').on('change',function(){
124
+ var num=$('.js-dow').index(this);
125
+ var flg=$(this).prop('checked');
126
+ $('#t1 tr').each(function(){
127
+ $(this).find('td').eq(num).toggleClass('selected',flg);
128
+ });
129
+ });
130
+ $('#js-nh').on('change',function(){
131
+ var flg=$(this).prop('checked');
132
+ $('#t1 td.js-national-holiday').toggleClass('selected',flg);
133
+ }).change();
134
+ $('#selectHolidays').on('change',function(){
135
+ var flg=$(this).prop('checked');
136
+ $('#t1 td.js-national-holiday').toggleClass('selected',flg);
137
+ $('#t1 tr').each(function(){
138
+ $(this).find('td').slice(5,7).toggleClass('selected',flg);
139
+ });
140
+ $('.js-holiday').prop('checked',flg);
141
+ }).change();
142
+ $('#selectWeekdays').on('change',function(){
143
+ var flg=$(this).prop('checked');
144
+ $('#t1 tr').each(function(){
145
+ $(this).find('td').slice(0,5).not('.js-national-holiday').toggleClass('selected',flg);
146
+ });
147
+ $('.js-weekday').prop('checked',flg);
148
+ }).change();
149
+ });
150
+
151
+ ```
152
+ ```HTML
153
+ <input type="checkbox" class="js-dow js-weekday">月曜
154
+ <input type="checkbox" class="js-dow js-weekday">火曜
155
+ <input type="checkbox" class="js-dow js-weekday">水曜
156
+ <input type="checkbox" class="js-dow js-weekday">木曜
157
+ <input type="checkbox" class="js-dow js-weekday">金曜
158
+ <input type="checkbox" class="js-dow js-holiday">土曜
159
+ <input type="checkbox" class="js-dow js-holiday">日曜
160
+ <input type="checkbox" class="js-holiday" id="js-nh">祝日
161
+ <input type="checkbox" id="selectHolidays">土日祝日
162
+ <input type="checkbox" id="selectWeekdays">平日
163
+ <table id="t1">
164
+ <tr>
165
+ <th class="js-dow">mon</th>
166
+ <th class="js-dow">tue</th>
167
+ <th class="js-dow">wed</th>
168
+ <th class="js-dow">thu</th>
169
+ <th class="js-dow">fri</th>
170
+ <th class="js-dow">sat</th>
171
+ <th class="js-dow">sun</th>
172
+ </tr>
173
+ <tr>
174
+ <td class="js-national-holiday">1</td>
175
+ <td>2</td>
176
+ <td>3</td>
177
+ <td>4</td>
178
+ <td>5</td>
179
+ <td>6</td>
180
+ <td>7</td>
181
+ </tr>
182
+ <tr>
183
+ <td>8</td>
184
+ <td>9</td>
185
+ <td>10</td>
186
+ <td>11</td>
187
+ <td>12</td>
188
+ <td>13</td>
189
+ <td>14</td>
190
+ </tr>
191
+ <tr>
192
+ <td>15</td>
193
+ <td>16</td>
194
+ <td>17</td>
195
+ <td>18</td>
196
+ <td>19</td>
197
+ <td>20</td>
198
+ <td>21</td>
199
+ </tr>
200
+ <tr>
201
+ <td>22</td>
202
+ <td>23</td>
203
+ <td>24</td>
204
+ <td>25</td>
205
+ <td>26</td>
206
+ <td>27</td>
207
+ <td>28</td>
208
+ </tr>
209
+ </table>
210
+ ```
211
+

1

追記

2016/10/12 07:24

投稿

yambejp
yambejp

スコア117914

answer CHANGED
@@ -1,3 +1,108 @@
1
1
  祝日に適当なclassを指定して、場合分けをすればよいのでは?
2
2
  祝日を自動計算することは理論的に不可能です。
3
- (祝日のロジックは定期的に変わるので)
3
+ (祝日のロジックは定期的に変わるので)
4
+
5
+ # 追記
6
+ チェックボックスは条件が競合するのでボタンを使ったタイプを追記しておきます
7
+
8
+ ```javascript
9
+ $(function(){
10
+ var list={"mon":0,"tue":1,"wed":2,"thu":3,"fri":4,"sat":5,"sun":6};
11
+ $('#t1 td').on('click',function(){
12
+ $(this).toggleClass('selected');
13
+ });
14
+ $('.weekday').on('click',function(){
15
+ var name=$(this).prop('name');
16
+ var val=$(this).val();
17
+ $('#t1 tr').each(function(){
18
+ $(this).find('td').eq(list[name]).toggleClass('selected',val=='on');
19
+
20
+ });
21
+ });
22
+ $('.js-dow').on('click',function(){
23
+ var name=$(this).prop('name');
24
+ var val=$(this).val();
25
+ $('#t1 tr').each(function(){
26
+ $(this).find('td').eq(list[name]).toggleClass('selected',val=='on');
27
+
28
+ });
29
+ });
30
+ $('[name="js-nh"]').on('click',function(){
31
+ var val=$(this).val();
32
+ $('#t1 td.js-national-holiday').toggleClass('selected',val=='on');
33
+ });
34
+ $('[name="js-holidays"]').on('click',function(){
35
+ var val=$(this).val();
36
+ $('#t1 td.js-national-holiday').toggleClass('selected',val=='on');
37
+ $('#t1 tr').each(function(){
38
+ $($(this).find('td').slice(5,7)).toggleClass('selected',val=='on');
39
+ });
40
+ });
41
+ $('[name="js-weekdays"]').on('click',function(){
42
+ var val=$(this).val();
43
+ $('#t1 tr').each(function(){
44
+ $(this).find('td').slice(0,5).not('.js-national-holiday').toggleClass('selected',val=='on');
45
+ });
46
+ });
47
+ });
48
+ ```
49
+
50
+ ```HTML
51
+ 月曜<input type="button" class="js-dow" name="mon" value="on">/<input type="button" class="js-dow" name="mon" value="off">
52
+ 火曜<input type="button" class="js-dow" name="tue" value="on">/<input type="button" class="js-dow" name="tue" value="off">
53
+ 水曜<input type="button" class="js-dow" name="wed" value="on">/<input type="button" class="js-dow" name="wed" value="off">
54
+ 木曜<input type="button" class="js-dow" name="thu" value="on">/<input type="button" class="js-dow" name="thu" value="off">
55
+ 金曜<input type="button" class="js-dow" name="fri" value="on">/<input type="button" class="js-dow" name="fri" value="off">
56
+ 土曜<input type="button" class="js-dow" name="sat" value="on">/<input type="button" class="js-dow" name="sat" value="off">
57
+ 日曜<input type="button" class="js-dow" name="sun" value="on">/<input type="button" class="js-dow" name="sun" value="off">
58
+ 祝日<input type="button" name="js-nh" value="on">/<input type="button" name="js-nh" value="off">
59
+ 土日祝日<input type="button" name="js-holidays" value="on">/<input type="button" name="js-holidays" value="off">
60
+ 平日<input type="button" name="js-weekdays" value="on">/<input type="button" name="js-weekdays" value="off">
61
+ <table id="t1">
62
+ <tr>
63
+ <th class="js-dow">mon</th>
64
+ <th class="js-dow">tue</th>
65
+ <th class="js-dow">wed</th>
66
+ <th class="js-dow">thu</th>
67
+ <th class="js-dow">fri</th>
68
+ <th class="js-dow">sat</th>
69
+ <th class="js-dow">sun</th>
70
+ </tr>
71
+ <tr>
72
+ <td class="js-national-holiday">1</td>
73
+ <td>2</td>
74
+ <td>3</td>
75
+ <td>4</td>
76
+ <td>5</td>
77
+ <td>6</td>
78
+ <td>7</td>
79
+ </tr>
80
+ <tr>
81
+ <td>8</td>
82
+ <td>9</td>
83
+ <td>10</td>
84
+ <td>11</td>
85
+ <td>12</td>
86
+ <td>13</td>
87
+ <td>14</td>
88
+ </tr>
89
+ <tr>
90
+ <td>15</td>
91
+ <td>16</td>
92
+ <td>17</td>
93
+ <td>18</td>
94
+ <td>19</td>
95
+ <td>20</td>
96
+ <td>21</td>
97
+ </tr>
98
+ <tr>
99
+ <td>22</td>
100
+ <td>23</td>
101
+ <td>24</td>
102
+ <td>25</td>
103
+ <td>26</td>
104
+ <td>27</td>
105
+ <td>28</td>
106
+ </tr>
107
+ </table>
108
+ ```