Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Как сохранить значение checkbox при перезагрузки по классу (https://javascript.ru/forum/css-html/78938-kak-sokhranit-znachenie-checkbox-pri-perezagruzki-po-klassu.html)

рони 26.11.2019 08:45

svileff,
надо работать с устройством вашего фильтра, а не с checkbox

svileff 26.11.2019 08:49

Фильтр идет стандартный у него нет не каких настроек. Поэтому к нему не могу подобраться.

laimas 26.11.2019 08:51

Цитата:

Сообщение от svileff
Не совсем понял

У вас кастомные списки, родителями которых являются DIV. Эти родители имеют общий класс t-store__filter__item t-store__filter__item_checkbox, но не имеют уникальных признаков. Если сохранять в памяти весь набор флажков под индексами от 0 до N, то, к примеру, изменив порядок следования на странице этих DIV, память "пометит" уже не те, что были сохранены. То же самое и с флажками.

В память нужно писать имя выбранного флажка, который затем и будет выбираться. Но так можно поступать, если имя каждого флажка во всех наборах уникальное. Если нет, то родителям (DIV) также нужно дать уникальные признаки, под которыми будут храниться наборы выбранных их флажков.

svileff 26.11.2019 08:58

Я побывал назначить id для каждого inputa не выходит, тильда не дает

laimas 26.11.2019 09:02

Цитата:

Сообщение от svileff
Я побывал назначить id для каждого inputa

А этого не требуется. Плохо, что имена флажков имеют такое "гидрофильное масло", по разумению такое должны иметь их свойства value. Но тоже можно. Я не хочу разбираться, одно ли молочко во всех полях или нет, но именно это нужно запоминать, если это и есть уникальный признак.

рони 26.11.2019 09:03

svileff,
убрать прежний добавить этот вниз, перед </body>
<script>
(function(b) {
    var e = document.querySelectorAll(b),
        a = localStorage.getItem(b),
        a = (a = JSON.parse(a)) || (a = {}, localStorage.setItem(b, JSON.stringify(a)));
   var time = 100;
    e.forEach(function(c, d) {
        if(a[d] == true) {time += 150,  window.setTimeout(function() {
       $(c).trigger("click")
    }, time)};});
        document.addEventListener("click", function() {
            e.forEach(function(c, d) {
                a[d] = c.checked;
            })
            localStorage.setItem(b, JSON.stringify(a))
        })
})(".t-checkbox.js-store-filter-opt-chb");
</script>

рони 26.11.2019 09:22

svileff,
низ страницы, это там где у вас скрипт Yandex.Metrika, после него, и добавьте, между метрикой и body

svileff 26.11.2019 09:39

тильда не дает вниз поставить, толь ка на верх перед boby

рони 26.11.2019 09:57

Цитата:

Сообщение от svileff
тильда не дает вниз поставить

:blink:
тогда так
$(function() {
(function(b) {
    var e = document.querySelectorAll(b),
        a = localStorage.getItem(b),
        a = (a = JSON.parse(a)) || (a = {}, localStorage.setItem(b, JSON.stringify(a)));
   var time = 100;
    e.forEach(function(c, d) {
        if(a[d] == true) {time += 150,  window.setTimeout(function() {
       $(c).trigger("click")
    }, time)};});
        document.addEventListener("click", function() {
            e.forEach(function(c, d) {
                a[d] = c.checked;
            })
            localStorage.setItem(b, JSON.stringify(a))
        })
})(".t-checkbox.js-store-filter-opt-chb");
});

svileff 26.11.2019 10:23

так не срабатывает...


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