实现全选全不选以及单个选中,并点击下一页时,保存选中记录,后台使用的是session来实现保存的!
流程就是给每个复选框都加上点击事件(包括全选复选框),在点击的时候获取到对应的ID,将这个ID通过ajax发送到后台,后台处理后存入session!!!
注意在该页面方法中需要每进入页面就判断session中有没有你存入的id,如果有将复选框变成选中的!下面是整体的代码,有很多不足,希望给多多给意见啊!!!
前段js代码
//全选按钮
var id_array = [];
var scurl = "{:U('setsess')}";
$('.allselect').click(function(){
$(":checkbox[name='ids[]']").prop("checked", this.checked); // this指代的你当前选择的这个元素的JS对象
if($("input[class='allselect']").is(':checked')){
$.each($('input:checkbox:checked'),function(){
if($(this).val() != 'on'){
id_array.push($(this).val());
}
});
$.post(scurl,{sta:4,id:id_array},function (resp) {
console.log(resp);
},'json');
} else {
console.log(id_array);
$.post(scurl,{sta:5,id:id_array},function (resp) {
console.log(resp);
},'json');
id_array.length = 0;
}
});
//单个复选框点击事件
var fuxuan = '';
var shuzu = [];
$("input[name='ids[]']").click(function(){
if($(this).is(':checked') == true){
fuxuan = $(this).val();
console.log(fuxuan)
$.post(scurl,{sta:1,id:fuxuan},function (resp) {
console.log(resp);
},'json');
} else {
fuxuan = $(this).val();
$.post(scurl,{sta:2,id:fuxuan},function (resp) {
console.log(resp);
},'json');
}
});
然后是后端代码
//批量分页处理传过来的id,存到session中
public function setsess()
{
$id = $_POST['id'];
if(is_array($id)){
$id = implode(',', $id);
}
if(session('admingsid') == ''){
session('admingsid',$id);
} else {
$cook = explode(',',session('admingsid'));
foreach($cook as $kk=>$vv){
if(!$vv){
unset($cook[$kk]);
}
}
if(!$cook){
$cook = array();
}
//var_dump($cook);
if($_POST['sta'] == 1){
if(!in_array($id,$cook)){
array_push($cook,$id);
$cook = implode(',',$cook);
session('admingsid',$cook);
}
} elseif($_POST['sta'] == 2) {
if(in_array($id,$cook)){
foreach($cook as $k=>$v){
if($id != $v){
$xinde .= $v.',';
}
}
session('admingsid',$xinde);
}
} elseif($_POST['sta'] == 3) {
session('admingsid',null);
$this->ajaxReturn(array('admingsid' => session('admingsid')));
} elseif ($_POST['sta'] == 4) {
$id = explode(',', $id);
foreach ($id as $k => $v) {
array_push($cook,$v);
}
$cook = implode(',',array_unique($cook));
session('admingsid',$cook);
} elseif ($_POST['sta'] == 5) {
//全选按钮为全不选时,把存在于原来session中的值去除
$id = explode(',', $id);
foreach ($cook as $key => $value) {
if(in_array($value,$id))
unset($cook[$key]);
}
if($cook){
$cook = implode(',', $cook);
}
session('admingsid',$cook);
}
}
}