2015-06-02 98 views
0

我正在使用jquery和本地存儲來保存複選框的狀態。本地存儲未保存複選框未選中階段

爲了節省我用:

function save_form() { 
    window.localStorage.setItem('fb_show', $('#fb_show').val()); 
    alert('Saved'); 
} 

function load_form() { 
    var fb_checkbox_val = window.localStorage.getItem('fb_show'); 
    alert(fb_checkbox_val); 

    if (fb_checkbox_val == 'on') { 
     $("#fb_show").prop("checked", true); 
    } else { 
     $("#fb_show").prop("checked", false); 
    } 
} 

的問題是,當它的選中它的值保存爲「開」,使一部分工作,但是當我取消選中該複選框並再次保存它,它仍然保存as'on'...所以之後的代碼會將其設置爲再次檢查。

我該如何解決這個問題?

+1

多數民衆贊成那是因爲你保存複選框的值,而不是它的狀態 – atmd

+0

@atmd我認爲這並不重要! OP可能會將checked複選框的值設置爲'checked'或'off',然後hez比較'string'值而不是bool值! –

+0

但值保持不變如果檢查與否 – atmd

回答

3

您應該保存複選框的狀態localStorage

function save_form() { 
    window.localStorage.setItem('fb_show', $('#fb_show').is(':checked')); 
    alert('Saved'); 
} 

function load_form() { 
    var fb_checkbox_val = window.localStorage.getItem('fb_show') === 'true' ? true : false; 
    alert(fb_checkbox_val); 

    $("#fb_show").prop("checked", fb_checkbox_val); 
} 
+1

值得指出的是保存存儲中的布爾值將被轉換爲字符串。 ('「true」'not'true') – atmd

+1

@atmd謝謝!更新 – Tushar

0

一個未選中的複選框實際上並不具有價值,因此你必須檢查它是否被選中並保存價值。 $("#fb_show").is(":checked")