在检查/取消选中每个复选框时,代码工作正常,但如果我用来选择所有复选框并刷新页面,则会返回默认值,该值未经检查。
这是脚本:
<script>
$(document).ready(function(){
$("#checkAll").click(function () {
$('input.box').not(this).prop('checked', this.checked);
});
$("input.box").each(function() {
var mycookie = $.cookie($(this).attr('name'));
if (mycookie && mycookie === "true") {
$(this).prop('checked', mycookie);
}
});
$("input.box").change(function() {
$.cookie($(this).attr("name"), $(this).prop('checked'), {
path: '/',
expires: 365
});
});
});
</script>
以下是HTML:
<table cellpadding="0" cellspacing="5" width="100%" height="60%">
<tr>
<input type="checkbox" id="checkAll">Check All
<td><input class="box" type="checkbox" name="1" /></td>
<td><input class="box" type="checkbox" name="2" /></td>
<td><input class="box" type="checkbox" name="3" /></td>
</tr>
答案 0 :(得分:0)
您的复选框全部清除,因为刷新页面时,页面会再次加载。
要保留您选中的值,您有以下几种选择:
答案 1 :(得分:0)
您似乎正在使用jQuery.cookie插件,因此这里有一个可以使用它的解决方案。
所有这一切都是将复选框的状态保存到cookie中,然后在页面重新加载时从cookie中读回它们。
此外,您可能不应该使用表格进行布局。
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Persist checkboxes</title>
</head>
<body>
<div>
<label for="checkAll">Check all</label>
<input type="checkbox" id="checkAll">
</div>
<div>
<label for="option1">Option 1</label>
<input type="checkbox" id="option1">
</div>
<div>
<label for="option2">Option 2</label>
<input type="checkbox" id="option2">
</div>
<div>
<label for="option3">Option 3</label>
<input type="checkbox" id="option3">
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/jquery.cookie/1.4.0/jquery.cookie.min.js"></script>
<script>
$("#checkAll").on("change", function() {
$(':checkbox').not(this).prop('checked', this.checked);
});
$(":checkbox").on("change", function(){
var checkboxValues = {};
$(":checkbox").each(function(){
checkboxValues[this.id] = this.checked;
});
$.cookie('checkboxValues', checkboxValues, { expires: 7, path: '/' })
});
function repopulateCheckboxes(){
var checkboxValues = $.cookie('checkboxValues');
if(checkboxValues){
Object.keys(checkboxValues).forEach(function(element) {
var checked = checkboxValues[element];
$("#" + element).prop('checked', checked);
});
}
}
$.cookie.json = true;
repopulateCheckboxes();
</script>
</body>
</html>