在本地存储中存储复选框值

时间:2014-02-27 17:13:42

标签: javascript jquery checkbox local-storage

我有一个复选框,其值$row['uid']我想使用javascript或jquery存储在本地存储中。当用户“取消选中”复选框时,应从本地存储中删除该值

这是我的HTML:

<form> Favorites <input type="checkbox" class="favorite" value="'.$row['uid'].' onclick='.fave.add();'"></form>

这是我目前在javascript中用于本地存储的内容。我不太确定应该如何添加和删除值$row['uid']

    var fave = fave || {};
    var data = JSON.parse(localStorage.getItem("favorite"));
    data = data || {};
            var fave = fave || {};
            var data = JSON.parse(localStorage.getItem("favorite"));
            data = data || {};
            $(function () {
                var data = localStorage.getItem("favorite");

                if (data !== null) {
                    $("input[name='favorites']").attr("checked", "checked");
                }
            });
            $("input[name='favorites']").click(function () {
                if ($(this).is(":checked")) {
                localStorage.setItem("favorite", $(this).val());
                } 
                else {
                    localStorage.removeItem("favorite");
                }
            });

非常感谢任何和所有帮助!

3 个答案:

答案 0 :(得分:2)

localStorage有两个主要功能,getItemsetItem。对于setItem,您传入一个键和一个值。如果再次写入该键,它将重写该值。因此,在您的情况下,如果选中了一个框,您将执行localStorage.setItem("checkbox_value", true),如果未选中此框,则会传入false。要获得值,您可以使用jQuery来查看:$(checkbox).is(':checked')并使用简单的if-else子句传入true或false。然后当您重新加载页面时,在$( document ).ready()上,您可以使用localStorage.getItem(key)获取值,并使用Javascript设置复选框值。

这就是我如何使用localStorage记住复选框值。

希望我帮助过!问我有什么不清楚的地方。

答案 1 :(得分:0)

Here's an example让你朝着正确的方向前进:

var boxes, arr;

// This function loads the array and then checks the uid of each checkbox
// against it.

function checkBoxes() {
  arr = loadBoxArray();
  $.each($('input[type=checkbox]'), function (i, el) {
    if (arr.indexOf(i) > -1) {
      $(this).prop('checked', true);
    } else {
      $(this).prop('checked', false);
    }
  });
}

// If the localStorage item is available, load it into an array
// otherwise set a default array and save it to localStorage

function loadBoxArray() {
  if (localStorage.getItem('boxes')) {
    arr = loadBoxArray();
  } else {
    arr = [0, 2];
    saveBoxArray(arr);
  }
}

// Save the array to localStorage    

function saveBoxArray(arr) {
  localStorage.setItem('boxes', JSON.stringify(arr));
}

// On page load check the boxes found in localStorage

checkBoxes();

// Clicking a checkbox will update the checkbox array which is then saved to localStorage

$('input[type=checkbox]').click(function () {
  var arr = $.map($('input[type=checkbox]:checked'), function (el) {
    return $(el).data('uid');
  });
  saveBoxArray(arr);
});

答案 2 :(得分:0)

如果您希望在页面刷新后保持复选框状态,并且您不介意使用jQuery:

http://jsfiddle.net/9L2Ac/

$(function () {
    var data = localStorage.getItem("favorite");

    if (data !== null) {
        $("input[name='favorites']").attr("checked", "checked");
    }


});



$("input[name='favorites']").click(function () {

    if ($(this).is(":checked")) {
        localStorage.setItem("favorite", $(this).val());
    } else {
        localStorage.removeItem("favorite");
    }

});