如何使用jQuery从cookie中删除未经检查的复选框值?

时间:2010-08-26 08:47:07

标签: jquery checkbox cookies

我正在尝试编写一个脚本,其中从cookie中删除一组复选框的未经检查的值。我在下面使用jQuery的cookie插件是我当前的函数,当调用复选框时调用它;

<script type="text/javascript">
 jQuery(document).ready(function($){
    $("input[type=checkbox]").each(function () {
      $(this).change(updateCount);
    });

    updateCount();

    function updateCount () {

      var val;
      var my_cookie
      var new_my_cookie;

    $(':checkbox:checked').each(function(){
      val= $(this).val();
      my_cookie=$.cookie("chosen_ones");
      $.cookie("chosen_ones", null);
      new_my_cookie=my_cookie+"|"+val;
      $.cookie("chosen_ones", new_my_cookie);
    });

    //somehow need to remove values from cookie when unchecked here

      var length = $.cookie("chosen_ones").split("|").length;
      length=length-1;
      $("#count").text(length);
      $("#status").toggle(length >= 0);
    };
  });
</script>

欢迎任何帮助。

3 个答案:

答案 0 :(得分:1)

不要删除该值。在每个复选框更改时,您只需获取所有选中的复选框(就像您现在一样),将它们添加到一个字符串中(或使用json?),将它们作为“checkedboxes”或其他内容存储在cookie中。如果你取消选中一个复选框,你可以运行相同的功能,取出所有选中的复选框,留下你刚刚取消选中的复选框,并覆盖你cookie中的当前复选框,不是吗?

//修改

在cookie中用JSON对象写了一个小例子。适用于多个页面:-) http://labs.joggink.be/json-checkbox-cookie/

答案 1 :(得分:1)

如果你需要一个没有json2的答案(我的意思是不是每个人都知道json2)你可以使用这个答案; (如果你喜欢它,也许你可以评价它:D)

<script type="text/javascript">

//Adds new uniqueArr values to temp array
    function uniqueArr(a) {
     temp = new Array();
     for(i=0;i<a.length;i++){
      if(!contains(temp, a[i])){
       temp.length+=1;
       temp[temp.length-1]=a[i];
      }
     }
     return temp;
    }


    //Will check for the Uniqueness
    function contains(a, e) {
     for(j=0;j<a.length;j++)if(a[j]==e)return true;
     return false;
    }

 jQuery(document).ready(function($){
    $("input[type=checkbox]").each(function () {
      $(this).change(updateCount);
    });

    updateCount();



    function updateCount () {

      var val;
      var my_cookie="";
      var new_my_cookie="";
      var cookie_array;
      var new_cookie_array;
      var new_cookie_string="";
      var number=0;
      var temp_cookie="";

      my_cookie=$.cookie("chosen_ones");

    $(':checkbox:checked').each(function(){
      val= $(this).val();
      if((val!=null)&&(val!="")){
        my_cookie=val+"|"+my_cookie;
      }


    });

    new_cookie_array=uniqueArr(my_cookie.split("|"));

    $.each(new_cookie_array, function(index, values) {
            if((values!="")&&(values!="null")&&(values!=null)){
                temp_cookie=values+"|"+temp_cookie;
            }
        });

    $.cookie("chosen_ones", null);
    $.cookie("chosen_ones", temp_cookie);

    var cookie_array=$.cookie("chosen_ones").split("|");

    $(':checkbox:not(:checked)').each(function(){
      val= $(this).val();
      $.each(cookie_array, function(index, values) {
               if((values==val)&&(values!=null)&&(values!="")&&(values!="null")&&(values!="")){
                cookie_array[index]="";
            }
        });
    });

      new_cookie_array=uniqueArr(cookie_array);

      $.each(new_cookie_array, function(index, values) {
            if((values!="")&&(values!=null)&&(values!="null")){
                new_cookie_string=new_cookie_string+"|"+values;
            }
        });

      $.cookie("chosen_ones", null);
      $.cookie("chosen_ones", new_cookie_string);
      alert($.cookie("chosen_ones"));
      var temping_string=$.cookie("chosen_ones");
      $("#count").text(temping_string.split("|").length-1);
      $("#status").toggle(temping_string.split("|").length-1 >= 0);
    };
  });
</script>

答案 2 :(得分:0)

  

使用jquery

编写,阅读和删除Cookie
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
<script type="text/javascript">
    $(function () {
        $("#btnWrite").click(function () {
            $.cookie("Name", $("#txtName").val());
        });
        $("#btnRead").click(function () {
            alert($.cookie("Name"));
        });
        $("#btnDelete").click(function () {
            //Old Code 
           //$.removeCookie("Name")
//New code
$.removeCookie("CookieName",{path:'your path'});
        });
    });
</script>