2011-08-28 34 views
2

我目前正在开发购物车解决方案,并且我有一个字段,用于征税。jQuery - 保存/使用Cookie

我想要做的是,当用户选择复选框字段的税收,然后这是存储在cookie中,所以当他们去其他页面,然后返回到购物车,然后检查这些字段。

我正在使用http://plugins.jquery.com/project/Cookie来实现此目的。

我可以为复选框创建cookie,但我很努力地检查cookie,如果它是复选框,那么将复选框设置为“已选中”。我还需要删除cookies。当用户取消选中复选框,将呼叫类似$ .cookie(“VAT_1”,NULL)

我有下面的代码至今:

$(document).ready(function() { 
    $('input:checkbox[name="<?php echo $prod; ?>"]').click(function() { 
     var name = $(this).attr("name"); 
     var value = $(this).val(); 
     var date = new Date(); 
     date.setTime(date.getTime() + (30 * 60 * 1000)); 

     $.cookie(name, value, { expires: date });//Set the expires time as per your requirement. 
     cookie = $.cookie(name); 

     alert(cookie);  
    }) 
}); 

所有帮助被长久地感谢。

感谢

+0

你可以用另一件事是会话。但是你也可以创造你自己的价值。像税= 1或0,而不是从复选框本身设置一个值。所以,你只要检查它是否被检查,如果这样设置税= 1。 – Matt

回答

1

为了支持加载先前选中的复选框,在document.ready()函数的顶部,插入以下代码:

$('input:checkbox').each(function(index) { 
    cookie = $.cookie($(this).attr("name")); 
    if (cookie == 1) { 
     $(this).prop('checked', true); 
}); 

这应该通过页面上的每个复选框环,查找相关cookie,并相应地更改复选框。

在删除Cookie并正确设置它们的方面,您不应该使用复选框的val()。相反,你应该寻找了它checked属性:

$('input:checkbox[name="<?php echo $prod; ?>"]').click(function() { 
    var name = $(this).attr("name"); 
    var value = $(this).prop('checked'); 
    var date = new Date(); 
    date.setTime(date.getTime() + (30 * 60 * 1000)); 

    if (value) { 
     $.cookie(name, 1, { expires: date }); 
    } else { 
     $.cookie(name, null); 
    } 

    cookie = $.cookie(name); 

    alert(cookie);  
}) 

这些代码两件应该结合这样

$(document).ready(function() { 
    //first code above 
    //second code above 
});