2016-09-22 14 views
0

リロード時にリロード時にマーク付きチェックボックスが表示されるフォームで作業しています ローカルストレージに保存できるコードを作成しましたが、今はしませんローカルストレージからチェックボックスのIDを取得する方法を知っているので、ページの再読み込み時に再度チェックバックされます。上JQueryのローカルストレージからチェックボックスIDを取得する

// this code saves the marked checkbox in the local storage 
 

 
$('.required-option').on('click', function() { 
 
    var fav, favs = []; 
 
    $('.required-option').each(function() { // run through each of the checkboxes 
 
    fav = { 
 
     id: $(this).attr('id'), 
 
     value: $(this).prop('checked') 
 
    }; 
 
    if (fav.value === true) { 
 
     favs.push(fav.id); 
 
    } 
 
    }); 
 
    localStorage.setItem("checkbox", JSON.stringify(favs)); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" class="required-option" id="like1" /> 
 
<input type="checkbox" class="required-option" id="like2" /> 
 
<input type="checkbox" class="required-option" id="like3" /> 
 
<input type="checkbox" class="required-option" id="like4" /> 
 
<input type="checkbox" class="required-option" id="like5" /> 
 
<input type="checkbox" class="required-option" id="like6" /> 
 
<input type="checkbox" class="required-option" id="like7" /> 
 
<input type="checkbox" class="required-option" id="like8" /> 
 
<input type="checkbox" class="required-option" id="like9" />

答えて

1

あなたは、私が#接頭辞連結セレクタ文字列を格納している例ではここで、確認のチェックボックスの唯一のIDを格納することができます。

var elems = $('.required-option'); 
elems.on('click', function() { 
    //Iterate checked checkboxes and store selector like #xxx 
    var checkedCheckboxes = elems.filter(':checked').map(function() { 
     return '#' + this.id; 
    }).get().join(','); 
    localStorage.setItem("checkedCheckboxes", checkedCheckboxes); 
}); 

var checkedCheckboxesselector = localStorage.getItem("checkedCheckboxes"); 
if (!!checkedCheckboxesselector) { 
    $(checkedCheckboxesselector).prop('checked', true); 
} 

Updated fiddle

0

使用localStorage.getItem()のjsオブジェクト(私たちの場合は、配列)に文字列を解析するアイテムとJSON.parse()を取得する:ここで

JSFiddle

コードですあなたのページの準備が整った文書

$.each(JSON.parse(localStorage.getItem("checkbox")),function(i,v){ 
$('#'+v).attr('checked','checked'); //or as stated in the comments .prop('checked', true) 
}); 
+1

それは '.prop'(ATTR 'becaue(真 'にチェックが'))'チェックボックスやラジオボタン –

+0

で正常に動作しません。あなたはMarcosPérezGude – madalinivascu

+2

@あなたの主張のドキュメントを提供CA方が良いでしょうここをクリックしてください:http://api.jquery.com/attr/#attr-attributeName ** jQuery 1.6以降、.attr()メソッドは未設定の属性に対してundefinedを返します。フォーム要素のチェック、選択、無効状態などのDOMプロパティを取得および変更するには、.prop()メソッドを使用します。** – Maxzeroedge

1

これを実現する簡単な方法は、チェックボックスの属性をidに保存することです。選択されていないアイテムを保管することは少し冗長です。これを試してみてください:

$('.required-option').on('click', function() { 
    var favs = $('.required-option:checked').map(function() { 
     return this.id; 
    }).get(); 
    localStorage.setItem("checkbox", JSON.stringify(favs)); 
}) 

JSON.parse(localStorage.getItem("checkbox") || '[]').forEach(function(id) { 
    $('#' + id).prop('checked', true); 
}) 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<input type="checkbox" class="required-option" id="like1" /> 
<input type="checkbox" class="required-option" id="like2" /> 
<input type="checkbox" class="required-option" id="like3" /> 
<input type="checkbox" class="required-option" id="like4" /> 
<input type="checkbox" class="required-option" id="like5" /> 
<input type="checkbox" class="required-option" id="like6" /> 
<input type="checkbox" class="required-option" id="like7" /> 
<input type="checkbox" class="required-option" id="like8" /> 
<input type="checkbox" class="required-option" id="like9" /> 

Updated fiddle

関連する問題