回答編集履歴

2

ソースコードの修正

2021/07/14 09:01

投稿

k_a
k_a

スコア983

test CHANGED
@@ -228,7 +228,7 @@
228
228
 
229
229
  // 入力とのマッチチェック関数
230
230
 
231
- const textMatched = (elem, searchElm) => {
231
+ const textMatched = (elem, searchElm, name) => {
232
232
 
233
233
  const reg = new RegExp(name);
234
234
 
@@ -302,7 +302,7 @@
302
302
 
303
303
  const matchText = matchTextArray.reduce((acc, currentValue) =>
304
304
 
305
- acc || textMatched(this, currentValue), name == "")
305
+ acc || textMatched(this, currentValue, name), name == "")
306
306
 
307
307
 
308
308
 

1

ソースコードの修正

2021/07/14 09:01

投稿

k_a
k_a

スコア983

test CHANGED
@@ -214,37 +214,57 @@
214
214
 
215
215
  ```javascript
216
216
 
217
+ // チェックボックスの取得
218
+
219
+ const getCheckBox = (searchElem) =>
220
+
221
+ $(searchElem).map(function() {
222
+
223
+ return $(this).val()
224
+
225
+ }).get();
226
+
227
+
228
+
229
+ // 入力とのマッチチェック関数
230
+
231
+ const textMatched = (elem, searchElm) => {
232
+
233
+ const reg = new RegExp(name);
234
+
235
+ return reg.test($(elem).find(searchElm).text())
236
+
237
+ }
238
+
239
+
240
+
241
+ // checkBoxとのマッチチェック関数
242
+
243
+ const checkBoxMatched = (elm, searchElm, arr) => {
244
+
245
+ // 全部のチェックが外れていたらtrue
246
+
247
+ return ($.inArray($(elm).find(searchElm).text(), arr) >= 0) || arr.length == 0
248
+
249
+ }
250
+
251
+
252
+
253
+
254
+
217
255
  $(function() {
218
256
 
219
- $("input").on("input change", function() {
257
+ $("input").on("input", function() {
220
-
221
-
222
258
 
223
259
  // チェックされているチェックボックスを取得
224
260
 
225
- var kubn = $("[name=kubn]:checked").map(function() {
261
+ var kubn = getCheckBox("[name=kubn]:checked")
226
-
227
- return $(this).val();
262
+
228
-
229
- }).get();
230
-
231
- var level = $("[name=level]:checked").map(function() {
263
+ var level = getCheckBox("[name=level]:checked")
232
-
233
- return $(this).val();
264
+
234
-
235
- }).get();
236
-
237
- var kai = $("[name=kai]:checked").map(function() {
265
+ var kai = getCheckBox("[name=kai]:checked")
238
-
239
- return $(this).val();
266
+
240
-
241
- }).get();
267
+
242
-
243
-
244
-
245
- // 全部のチェックが外れているか
246
-
247
- const isAllUnChecked = (kubn.length + level.length + kai.length) == 0
248
268
 
249
269
  // 入力文字
250
270
 
@@ -252,9 +272,17 @@
252
272
 
253
273
 
254
274
 
275
+ // 文字判定用配列
276
+
277
+ const matchTextArray = [
278
+
279
+ 'td.All_kubn', 'td.All_level', 'td.All_houi', 'td.All_kai', 'td.All_toho', 'td.All_yacin', 'td.All_sonota'
280
+
281
+ ]
282
+
255
- // checkBoxとのマッェック関数
283
+ // チェックボックスの判定用配列
256
-
284
+
257
- const matchCheckElement = [
285
+ const matchCheckArray = [
258
286
 
259
287
  ['td.All_kubn', kubn],
260
288
 
@@ -264,51 +292,25 @@
264
292
 
265
293
  ]
266
294
 
267
- const checkBoxMatched = (elm, searchElm, arr) => {
268
-
269
- return $.inArray($(elm).find(searchElm).text(), arr) >= 0
270
-
271
- }
272
-
273
-
274
-
275
- // 入力とのマッチチェック関数
276
-
277
- const matchTextElement = [
278
-
279
- 'td.All_kubn', 'td.All_level', 'td.All_houi', 'td.All_kai', 'td.All_toho', 'td.All_yacin', 'td.All_sonota'
280
-
281
- ]
282
-
283
- const textMatched = (elem, searchElm) => {
284
-
285
- const reg = new RegExp(name);
286
-
287
- return reg.test($(elem).find(searchElm).text())
288
-
289
- }
290
-
291
295
 
292
296
 
293
297
  $("#abcd tbody tr").each(function() {
294
298
 
295
-
296
-
297
299
  // 全ての要素に対して入力とのマッチをチェック → name==''なら必ずtrue
298
300
 
299
301
  // 初期値 : name == "" で、matchTextElementの要素の判定を||でつなげていく
300
302
 
301
- const matchText = matchTextElement.reduce((acc, currentValue) =>
303
+ const matchText = matchTextArray.reduce((acc, currentValue) =>
302
304
 
303
305
  acc || textMatched(this, currentValue), name == "")
304
306
 
305
307
 
306
308
 
307
- // 全ての要素に対してチェックボックスとのマッチをチェック → isAllUnChecked==trueなら必ずtrue
309
+ // 全ての要素に対してチェックボックスとのマッチをチェック
308
-
310
+
309
- const matchCheck = matchCheckElement.reduce((acc, currentValue) =>
311
+ const matchCheck = matchCheckArray.reduce((acc, currentValue) =>
310
-
312
+
311
- acc || checkBoxMatched(this, currentValue[0], currentValue[1]), isAllUnChecked)
313
+ acc && checkBoxMatched(this, currentValue[0], currentValue[1]), true)
312
314
 
313
315
 
314
316
 
@@ -318,7 +320,7 @@
318
320
 
319
321
 
320
322
 
321
- /* const matchCheck = isAllUnChecked || checkBoxMatched(this, 'td.All_kubn', kubn) || checkBoxMatched(this, 'td.All_level', level) || checkBoxMatched(this, 'td.All_kai', kai)*/
323
+ /* const matchCheck = checkBoxMatched(this, 'td.All_kubn', kubn) || checkBoxMatched(this, 'td.All_level', level) || checkBoxMatched(this, 'td.All_kai', kai)*/
322
324
 
323
325
 
324
326
 
@@ -342,8 +344,6 @@
342
344
 
343
345
 
344
346
 
345
-
346
-
347
347
  ```
348
348
 
349
349
 
@@ -396,6 +396,12 @@
396
396
 
397
397
 
398
398
 
399
+ ### `未満`などの判定は数値で
400
+
401
+ 今回はご提示頂いたそのまま文字列でマッチさせているので`5年未満`を選択しても`3年未満`はマッチしませんが、本来は同時にマッチしないといけません。
402
+
403
+
404
+
399
405
  ### ソースコードはマークダウン形式で入力してください
400
406
 
401
407
  入力欄の<code>ボタンを押すか、```で囲むことで読みやすい表示になります。