我正在尝试编写一个脚本,其中从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>
欢迎任何帮助。
答案 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>