Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   localStorage.getItem (https://javascript.ru/forum/jquery/59230-localstorage-getitem.html)

optsar 02.11.2015 01:16

localStorage.getItem
 
Приветствую всех, задача такая, нужно у нескольких checkboxов сохранить их активность в localStorage, я в этом деле новичок, поэтому не знаю как сделать правильно.

Например есть 2 checkboxа (по факту их будет больше)

<input type="checkbox" class="stat" name="column-1" value="1" checked >
<input type="checkbox" class="stat" name="column-2" value="2" checked >


функция записывающая в localStorage

$(".stat").change(function (event) {
	
    if (this == event.target) {
		
	var key = this.name;

		  if ($(this).is(":checked"))  {
			localStorage.setItem(key, "true");
		  } else {
			localStorage.setItem(key, "false");
		  }
    }  
	
});




И вот здесь я делаю проверку

if (localStorage.getItem('column-1') == "true") {
  $("input[name = column-1]").attr("checked");
} else {

  $("input[name = column-1]").removeAttr("checked");
}

if (localStorage.getItem('column-2') == "true") {
  $("input[name = column-2]").attr("checked");
} else {

  $("input[name = column-2]").removeAttr("checked");
}



Ну если бы было всего 2 checkboxа, то я бы больше не стал бы головову ломать что дальше делать, но у меня должно быть больше checkboxов,
подскажите как сделать правильную проверку для большого кол-ва checkbox

Vlasenko Fedor 02.11.2015 01:58

$('input.stat').each(function(){
 if (localStorage.getItem(this.name) == "true") {
 	this.checked = "checked";
    } else {
        this.removeAttribute("checked");
    }
});

Rise 02.11.2015 02:07

Цитата:

Сообщение от optsar (Сообщение 394078)
сохранить их активность

Какую активность, которую пользователь выберет или которая по-умолчанию в html-разметке?

рони 02.11.2015 02:31

localStorage + checkbox сохранить выбранные чекбоксы
 
optsar,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>

<input type="checkbox" class="stat" name="column-1" value="1"  checked >
<input type="checkbox" class="stat" name="column-2" value="2"  checked >


<script>
(function(b) {
    var e = document.querySelectorAll(b),
        a = localStorage.getItem(b),
        a = (a = JSON.parse(a)) || (a = {}, localStorage.setItem(b, JSON.stringify(a)));
    [].forEach.call(e, function(c, d) {
        void 0 !== a[d] && (c.checked = a[d]);
        c.addEventListener("change", function() {
            a[d] = c.checked;
            localStorage.setItem(b, JSON.stringify(a))
        })
    })
})(".stat");
</script>

</body>

</html>

optsar 02.11.2015 02:52

Спасибо всем !

Galyanov 27.05.2016 04:08

ok


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