Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как правильно организовать обработку большого кол-ва checkbox? (https://javascript.ru/forum/jquery/68282-kak-pravilno-organizovat-obrabotku-bolshogo-kol-va-checkbox.html)

pashin76 06.04.2017 20:26

Как правильно организовать обработку большого кол-ва checkbox?
 
Планируется всплывающее окно для выбора различных фильтров (неопределенное кол-во checkbox, на разных вкладках), которые нужно обрабатывать.

Думаю делать так:
При изменении checkbox срабатывает обработчик, который проходит по всем checkbox.
- Если checkbox отмечен впервые, то добавляем его значение в массив выбранных фильтров.
- Если checkbox отмечен, но его значение уже есть в массиве, ничего не предпринимаем
- Если checkbox не отмечен, но его значение уже есть в массиве, исключаем значение из массива.

По нажатии кнопки "Применить фильтры" передаем значения из масива в форму и сабмитим ее.

Есть стойкое ощущение, что пытаюсь изобрести колесо, наверняка есть более "красивое" и правильное решение.

Т.к. в JavaScript не силен никак не могу получить id, name и value, выбранных checkbox не зная их id

Самостоятельно дошел до этого:

$("input:checkbox").bind("change", function () {$("input:checkbox").map(function(){

// тут обрабатываем значения фильтров, но $(this).val() всегда равен ON 

});});


Буду благадарен за любые советы.

рони 06.04.2017 20:35

Цитата:

Сообщение от pashin76
При изменении checkbox срабатывает обработчик, который проходит по всем только выбранным checkbox.

и формирует новый массив

pashin76 06.04.2017 20:48

В таком случае потеряются фильтры, которые были выбраны на других вкладках +
Была идея показывать, какие фильтры уже отобраны, причем инфо о отобранных фильтрах выводить в порядке их выбора, т.е. инфо о новом фильтре дописывается в конец.

PS Как узнавать id, name и отмечен ли фильтр или нет нашел: $(this).prop("checked"), осталось найти как получать значение value

рони 06.04.2017 20:54

pashin76,
не понимаю о чём вы пишите
Цитата:

Сообщение от pashin76
осталось найти как получать значение id, name и value

this.id .... this.name ... какое value? если ничего не ставили, то on ...this.value .... this.checked тоже что $(this).prop("checked")

pashin76 06.04.2017 21:35

Цитата:

Сообщение от рони (Сообщение 449449)
pashin76,
не понимаю о чём вы пишите

Например сначала выбрали фильтр на вкладке размер (45)
Затем на вкладке материал выбрали фильтр материал (кожа)
Затем выбрали бренд (nike, puma)
Затем еще добавили размер (44)
Идея в том, чтобы отображать какие фильтры выбраны в порядке их выбора. В итоге должно получиться: 45, кожа, nike, puma, 44
А если проходить только по отмеченным checkbox и формировать массив заново, то потеряются фильтры выбранные на других вкладках, т.к. список возможных фильтров на каждой вкладке формируются рнр динамически и зависит от фильтров выбранных на других вкладках + не сохранится порядок, в котором фильтры выбирались.


Цитата:

Сообщение от рони (Сообщение 449449)
pashin76,
this.id .... this.name ... какое value? если ничего не ставили, то on ...this.value .... this.checked тоже что $(this).prop("checked")

То что нужно, спасибо

рони 06.04.2017 21:42

Цитата:

Сообщение от pashin76
А если проходить только по отмеченным checkbox и формировать массив заново, то потеряются фильтры выбранные на других вкладках, т.к. список возможных фильтров на каждой вкладке формируются рнр динамически и зависит от фильтров выбранных на других вкладках + не сохранится порядок, в котором фильтры выбирались.

мне это не осилить, всё что мог выше.

pashin76 06.04.2017 21:51

Спасибо огромное


Часовой пояс GMT +3, время: 13:04.