2011-08-28 73 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 
});