如何通过会话保存复选框状态?我正在使用此jquery代码来切换选项:
$('div.check input:checkbox').bind('change',function(){
$('#'+this.id+'txt').toggle($(this).is(':checked'));
});
但是当我重新加载时,复选框将恢复为默认状态。我知道我必须使用会话,但如何使用php中的会话使复选框状态持续存在?
HTML:
<div class="check">
<p><input type="checkbox" value="Name" id="name" checked /> <label for="name">Name</label></p>
<p><input type="checkbox" value="Reference " id="reference" checked /> <label for="reference">Reference</label></p>
</div>
<div id="nametxt"> Show Name TEXT </div>
<div id="reftxt"> Show Ref TEXT </div>
答案 0 :(得分:8)
纯粹支持localStorage
的JavaScript(如果可用),否则使用document.cookie
。
function getStorage(key_prefix) {
// this function will return us an object with a "set" and "get" method
// using either localStorage if available, or defaulting to document.cookie
if (window.localStorage) {
// use localStorage:
return {
set: function(id, data) {
localStorage.setItem(key_prefix+id, data);
},
get: function(id) {
return localStorage.getItem(key_prefix+id);
}
};
} else {
// use document.cookie:
return {
set: function(id, data) {
document.cookie = key_prefix+id+'='+encodeURIComponent(data);
},
get: function(id, data) {
var cookies = document.cookie, parsed = {};
cookies.replace(/([^=]+)=([^;]*);?\s*/g, function(whole, key, value) {
parsed[key] = decodeURIComponent(value);
});
return parsed[key_prefix+id];
}
};
}
}
jQuery(function($) {
// a key prefix is used for the cookie/storage
var storedData = getStorage('com_mysite_checkboxes_');
$('div.check input:checkbox').bind('change',function(){
$('#'+this.id+'txt').toggle($(this).is(':checked'));
// save the data on change
storedData.set(this.id, $(this).is(':checked')?'checked':'not');
}).each(function() {
// on load, set the value to what we read from storage:
var val = storedData.get(this.id);
if (val == 'checked') $(this).attr('checked', 'checked');
if (val == 'not') $(this).removeAttr('checked');
if (val) $(this).trigger('change');
});
});
jsFiddle demo available - 点击一些复选框,然后再次“运行”脚本!
答案 1 :(得分:0)
如果您不需要保存在数据库中,我建议使用cookie而不是会话。您可以使用简单的jQuery cookies plugin 。
答案 2 :(得分:0)
有一种方法,但你需要做一些更改当然,如果你通过表单或JQuery提交相同的参数名称(这里是name_txt和ref_txt)它将会起作用。
给复选框输入一个名字
<?php
if(isset($_REQUEST['name_txt']))
$name_text = $_REQUEST['name_txt'];
if(isset($_REQUEST['ref_txt']))
$ref_text = $_REQUEST['ref_txt'];
?>
<p><input type="checkbox" name = "name_txt" value="Name" id="name" <?php echo ($name_text == 'Name' || !isset($name_text))?'checked':'';?> />
<label for="name">Name</label></p>
<p><input type="checkbox" name = "ref_txt" value="Reference " id="reference" <?php echo ($ref_text == 'Reference' || !isset($ref_text))?'checked':'';?> /> <label for="reference">Reference</label></p>