多くの入力、テキストエリア、およびチェックボックスを備えた巨大なフォームがあります。フォームにはキャプチャがあります。フォームの回答をローカルに保存してlocalStorage
、キャプチャが返された場合にfail
フォーム データが再入力されるようにします。
HTML
<form name="wellnessForm" id="wellnessForm" action="confirm.php" method="POST">
<input type="text" name="firstName" />
<br/>
<input type="checkbox" name="noConcernsChk[]" value="1" />
<input type="checkbox" name="noConcernsChk[]" value="2" />
<br/>
<textarea>
</textarea>
</form>
jQuery
// DOM ready
$(function(){
$(':text').blur(function(e){
localStorage.setItem("flag", "set");
var data = $('#wellnessForm').serializeArray();
$.each(data, function(i, obj){
localStorage.setItem(obj.name, obj.value);
});
});
$(':checkbox').click(function(e){
localStorage.setItem("flag", "set");
var data = $('#wellnessForm').serializeArray();
$.each(data, function(i, obj){
localStorage.setItem(obj.value, e.checked);
});
});
// test if there is already saved data
if( localStorage.getItem("flag") == "set" ){
var data = $("#wellnessForm").serializeArray();
// have to select the valid inputs based on their name attribute
$.each(data, function(i, obj){
// check if checkbox
if(obj.name == 'noConcernsChk[]'){
$( "[value='"+obj.value+"']:checkbox" ).prop('checked', true);
}
else{
$("[name='" + obj.name + "']").val(localStorage.getItem(obj.name));
}
});
}
// provide mechanism to remove data (TODO: remove actual data not just kill the flag)
$("#clearData").click(function(e){
e.preventDefault();
localStorage.setItem("flag", "");
});
});
私
の例からわかるように、テキスト入力が機能しています。しかし、私はチェックボックスにこだわっています。localStorage
ボックスがチェックされているかどうかを覚えておきたいのですが、チェックされている場合は、ユーザーのフォームで再チェックしてください。また、テキストエリアはまだ機能していませんが、それほど難しくはありません。
質問
チェックボックスの状態をローカル ストレージに保存し、それを呼び出す (そして適切なボックスにチェックを入れる) にはどうすればよいですか?