溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

解決Layui選擇全部,換頁(yè)checkbox復(fù)選框重新勾選的問(wèn)題方法

發(fā)布時(shí)間:2020-10-13 19:57:10 來(lái)源:腳本之家 閱讀:835 作者:黃寶康 欄目:web開(kāi)發(fā)

在項(xiàng)目中發(fā)現(xiàn)layui數(shù)據(jù)表格勾選復(fù)選框checkbox的時(shí)候,轉(zhuǎn)到新的一頁(yè)勾選,上一次的勾選不會(huì)選中,即沒(méi)有記憶功能。導(dǎo)致跟后臺(tái)交互傳遞參數(shù)不全問(wèn)題。

為了解決此問(wèn)題,我們可以借助緩存,每勾選一個(gè),保存到緩存變量數(shù)組中,取消勾選的時(shí)候,刪除緩存的對(duì)應(yīng)項(xiàng)。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.jfinal.kit.PropKit" %>
<%@ page import="com.jfinal.kit.PropKit" %>
<%
 String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<!-- 引入公共css,js -->
<jsp:include page="/resource/jspf/include_common.jsp"></jsp:include>
<!-- 引入自定義css -->
<style type="text/css">
.layui-table-view .layui-form-checkbox[lay-skin=primary] i{margin-top:6px;}
.bo{border:1px solid;}
/* .imgs{border:1px solid;width:200px;height:300px;position:fixed;/* display:none; */} */
</style>
<title>提醒黨員</title>
</head>
<body >
<div class="layui-fluid">
 <form class="layui-form layui-fluid" action="">
  <div class="layui-row">
   <div class="layui-form-item layui-col-md12">
    <div class="layui-row hei" >
     <div class="layui-col-md2 layui-col-md-offset1 layui-input-inline"><!--  -->
      <input type="text" name="pmName" class="layui-input" placeholder="黨員姓名"/>
     </div>
     <div class="layui-col-md2 layui-input-inline">
      <input type="text" name="phone" class="layui-input" placeholder="手機(jī)號(hào)"/>
     </div>
     <div class="layui-col-md2 layui-input-inline">
      <input type="text" name="org_name" class="layui-input" placeholder="所在組織"/>
     </div>
     <div class="layui-col-md3">
      <input type="button" class="layui-btn zh-btn" lay-submit="" lay-filter="chaxun" btn-search value="查詢(xún)" />
      <input type="button" class="layui-btn zh-btn" btn-renovate value="刷新" />
     </div>
    </div>

   </div>
  </div>
 </form>
 <div class="layui-row">
  <div class="layui-col-md12">
   <xblock class="xb">
    <button class="layui-btn" btn-confirm><i class="layui-icon">&#xe615;</i>確定黨員
    </button>
   </xblock>
   <table id="idTest" lay-data="{id: 'idTest'}" class="layui-table" lay-filter="test"></div></table>
   <div id="page"></div>
  </div>
 </div>
</div>
<script type="text/html" id="sexTpl">
{{# if(d.SEX ==0){ }}
  女
{{# } else { }}
 男
{{# } }}
</script>
<script type="text/html" id="imgTpl">
 {{# if(d.HEAD_URL == null){ }}
  <img class="img_ra" src="<%=path%>/resource/images/default.jpg" width="32" height="32"/>
 {{# } else { }}
 <a href='{{d.HEAD_URL}}' target="_blank"><img src='{{d.HEAD_URL}}' width="32" height="32"/></a>
 {{# } }}
</script>
</body>
<script type="text/javascript">

var gloable_pm_codes = new Array();// 勾選的pm_code集合
var gloable_pm_names = new Array();
var gloable_tels = new Array();
var table_data = new Array();// 表格數(shù)據(jù)緩存
layui.use(['table', 'layer','jquery','laydate','form','element'], function () {
 var layer = layui.layer
   ,form = layui.form
   ,table = layui.table
   ,layer = layui.layer
   ,laydate = layui.laydate
   ,element = layui.element
   , $ = layui.jquery; 

 var h = document.body.clientHeight&&document.documentElement.clientHeight - 130;//窗口高度
 //監(jiān)聽(tīng)改變窗口大小
 window.onresize = function(){
  h = document.body.clientHeight&&document.documentElement.clientHeight - 130;//窗口高度
  tableIns.reload('idTest',{height:h});//刷新數(shù)據(jù)表格
  //window.location.reload(); //刷新iframe頁(yè)面
 }

 //確定選擇的黨員
 $('button[btn-confirm]').on('click',function(){ 
  var checkStatus = table.checkStatus('idTest')
  ,data = checkStatus.data; //選中信息
  var str=""; //參與人姓名拼串
  var tels="";
  if(gloable_pm_codes.length==0){
   layer.alert("請(qǐng)選擇提醒黨員");
   return;
  }
  for(var i=0;i<gloable_pm_codes.length;i++){
   if(i<gloable_pm_codes.length-1){
    str += gloable_pm_names[i]+",";
    tels += gloable_tels[i]+",";
   }else{
    str += gloable_pm_names[i];
    tels += gloable_tels[i];
   }
  }
  parent.document.getElementById("joinpm").value=str; //將參與人員傳到父級(jí)輸入框 
  parent.document.getElementById("tels").value = tels;
  Close(window.name);//關(guān)閉彈窗

 });


 //監(jiān)聽(tīng)搜索查詢(xún)
 form.on('submit(chaxun)', function(data){
  var name = data.field.pmName;
  var phone = data.field.phone;
  var org_name = data.field.org_name;
  tableIns.reload({
   page:{
    curr:1// 重新從第一頁(yè)開(kāi)始
   }
   ,where:{
    name : name,
    phone : phone,
    org_name : org_name
   }
   });

 });

 //刷新
 $('input[btn-renovate]').on('click',function(){ //部分參與
  window.location.reload(); //刷新iframe頁(yè)面
 });


 //方法級(jí)渲染
 var tableIns = window.demoTable = table.render({
  elem: '#idTest'
  ,id:'idTest'
  , url:'<%=path%>/partyMember/getPartyMembersContainChildren'
  , cols: [[ //標(biāo)題欄
   {checkbox: true, LAY_CHECKED: false, filter:'test'}
   ,{field: 'HEAD_URL', title: '頭像', width: 100, align: 'center',templet:'#imgTpl'}
   , {field: 'NAME', title: '黨員姓名', width: 180, align: 'center'}
   , {field: 'ORG_NAME', title: '組織機(jī)構(gòu)', width: 280, align: 'center'}
   , {field: 'MOBILE_NO', title: '手機(jī)號(hào)', width: 220, align: 'center'}
   , {field: 'SEX', title: '性別', width: 80, align: 'center',templet:'#sexTpl'}
  ]]
  ,height:h
  , page: true //是否顯示分頁(yè)
  ,limits : [ 15, 20,50, 100 ]
  ,limit : 15 //每頁(yè)默認(rèn)顯示的數(shù)量
  ,done:function(res,curr,count){
   $('table tr').on('click',function(){
     $('table tr').css('background','');
     $(this).css('background','<%=PropKit.use("config.properties").get("table_color")%>');
    });
   // 設(shè)置換頁(yè)勾選之前的
   table_data = res.data;
   //在緩存中找到PM_CODE ,然后設(shè)置data表格中的選中狀態(tài)
   //循環(huán)所有數(shù)據(jù),找出對(duì)應(yīng)關(guān)系,設(shè)置checkbox選中狀態(tài)
   for(var i=0;i<res.data.length;i++){
    for(var j=0;j<gloable_pm_codes.length;j++){
     if(res.data[i].PM_CODE==gloable_pm_codes[j]){
      //這里才是真正的有效勾選
      res.data[i]["LAY_CHECKED"]='true';
      //找到對(duì)應(yīng)數(shù)據(jù)改變勾選樣式,呈現(xiàn)出選中效果
      var index= res.data[i]['LAY_TABLE_INDEX'];
      $('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);
      $('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').next().addClass('layui-form-checked');
     }
    }
   }
   //設(shè)置全選checkbox的選中狀態(tài),只有改變LAY_CHECKED的值, table.checkStatus才能抓取到選中的狀態(tài)
   var checkStatus = table.checkStatus('test');
   if(checkStatus.isAll){
    $(' .layui-table-header th[data-field="0"] input[type="checkbox"]').prop('checked', true);
    $('.layui-table-header th[data-field="0"] input[type="checkbox"]').next().addClass('layui-form-checked');
   }


  }
 });

 //復(fù)選框選中監(jiān)聽(tīng),將選中的id 設(shè)置到緩存數(shù)組,或者刪除緩存數(shù)組
 table.on('checkbox(test)', function (obj) {
  console.log(obj);
  if(obj.checked==true){
   if(obj.type=='one'){
    gloable_pm_codes.push(obj.data.PM_CODE);
    gloable_pm_names.push(obj.data.NAME);
    gloable_tels.push(obj.data.MOBILE_NO);
   }else{
    for(var i=0;i<table_data.length;i++){
     gloable_pm_codes.push(table_data[i].PM_CODE);
     gloable_pm_names.push(table_data[i].NAME);
     gloable_tels.push(table_data[i].MOBILE_NO);
    }
   }
  }else{
   if(obj.type=='one'){
    for(var i=0;i<gloable_pm_codes.length;i++){
     if(gloable_pm_codes[i]==obj.data.PM_CODE){
      gloable_pm_codes.remove(i);
      gloable_pm_names.remove(i);
      gloable_tels.remove(i);
     }
    }
   }else{
    for(var i=0;i<gloable_pm_codes.length;i++){
     for(var j=0;j<table_data.length;j++){
      if(gloable_pm_codes[i]==table_data[j].PM_CODE){
       gloable_pm_codes.remove(i);
       gloable_pm_names.remove(i);
       gloable_tels.remove(i);
      }
     }
    }
   }
  }
 });

 //刪除數(shù)組自定義函數(shù)
 Array.prototype.remove=function(dx)
 {
  if(isNaN(dx)||dx>this.length){return false;}
  for(var i=0,n=0;i<this.length;i++)
  {
   if(this[i]!=this[dx])
   {
    this[n++]=this[i]
   }
  }
  this.length-=1
 }

 //監(jiān)聽(tīng)排序
 table.on('sort(test)', function (obj) {
  console.log(this, obj.field, obj.type);
  return;
  table.reload('test', {
   initSort: obj
   , where: { //重新請(qǐng)求服務(wù)端
    key: obj.field //排序字段
    , order: obj.type //排序方式
   }
  });
 });

 $('.layui-btn').on('click', function () {
  var type = $(this).data('type');
  active[type] ? active[type].call(this) : '';
 });

 //監(jiān)聽(tīng)批量選擇
 var active = {
  isAll: function () { //驗(yàn)證是否全選
   var checkStatus = table.checkStatus('idTest');
   layer.msg(checkStatus.isAll ? '全選' : '未全選')
  }
 };
 element.init();

});
//關(guān)閉彈窗
function Close(windowname){
 var index = parent.layer.getFrameIndex(windowname);
 parent.layer.close(index);
} 

</script>
</html>

其中復(fù)選框勾選監(jiān)聽(tīng)中的obj.type這個(gè)字段是layui自帶的。我從控制臺(tái)瀏覽器發(fā)現(xiàn)有這個(gè)字段。

解決Layui選擇全部,換頁(yè)checkbox復(fù)選框重新勾選的問(wèn)題方法

勾選一個(gè)的時(shí)候,type為one,而且數(shù)據(jù)data里也會(huì)帶上LAY_CHECKED和LAY_TABLE_INDEX字段。

全選的時(shí)候type變成all

解決Layui選擇全部,換頁(yè)checkbox復(fù)選框重新勾選的問(wèn)題方法

符:頁(yè)面效果圖

解決Layui選擇全部,換頁(yè)checkbox復(fù)選框重新勾選的問(wèn)題方法

以上這篇解決Layui選擇全部,換頁(yè)checkbox復(fù)選框重新勾選的問(wèn)題方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI