Как удалить непроверенные значения флажка из cookie, используя jQuery? - PullRequest
3 голосов
/ 26 августа 2010

Я пытаюсь написать скрипт, в котором непроверенные значения набора флажков удаляются из cookie.Я использую плагин cookie jQuery ниже, это моя текущая функция, которая вызывается при вызове флажка;

<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 ]

1 голос
/ 27 августа 2010

Если вам нужен ответ без 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>
1 голос
/ 26 августа 2010

не удаляйте значение.При каждом изменении флажка вы просто извлекаете все отмеченные флажки (как вы делаете сейчас), добавляете их в одну строку (или используя json?), Сохраняете их в cookie как «флажки» или как-то еще.Если вы снимите флажок, вы можете просто запустить ту же функцию, извлекая все отмеченные флажки, оставляя тот, который вы только что сняли, и перезаписывать текущие флажки в вашем cookie, нет?

// Редактировать

Написал небольшой пример с объектом JSON в cookie.Работает на нескольких страницах :-) http://labs.joggink.be/json-checkbox-cookie/

0 голосов
/ 24 января 2018

Для записи, чтения и удаления файлов cookie с помощью jquery

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...