前言:

Layui已经给出了多选记录的解决方案,是在每条数据的前面加上CheckBox,每次选择都有监听。效果是这样:

实现监听的代码如下,这是一种解决选择多条数据的方案:

table.on('edit(test)', function(obj){ //注:edit是固定事件名,test是table原始容器的属性 lay-filter="对应的值"
console.log(obj.value); //得到修改后的值
console.log(obj.field); //当前编辑的字段名
console.log(obj.data); //所在行的所有相关数据
});

本文记录的是我使用的另一种解决方案,即展示两个表格。详细需求如下:

需求:

1、页面展示两个表格,左边表格展示所有数据,右边是一个空表格展示已经选中的数据。

2、当点击左边数据表格某条记录,右边表格动态添加这条记录。

3、表单提交的时候直接提交右边表格所有数据。

这样就实现了记录多选,相对比较直观。

实现效果:

实现步骤分析:

1、既然提交的是右边表格的数据,是动态添加的,说明是不断变化的数据集合,所以应该设为变量。

2、当点击左边的表格数据,应该获取当前这条数据和右边表格的所有数据,将当前行数据添加到右边的集合变量中。

3、进行表格重载,刷新右边的表格。

代码参考:

// 设置变量存储已选择列表的数据
var tableBak = [];
// 监听表格点击事件
table.on('row(LAY_table_equipment)', function(obj) {
  var data = obj.data;
  // 设新变量存储右边列表的所有数据(源数据+选择的一条数据)
  var dataBak = [];
  // 源数据
  tableBak = table.cache.LAY_table_equipment_choose;
  // 去重
  for (var i = 0; i < tableBak.length; i++) {
    if (tableBak[i].id == data.id) {
      layer.msg("请勿重复添加!", {icon : 0,time : 1500});
    } else {
      dataBak.push(tableBak[i]);
    }
  }
  dataBak.push(data);
  tableBak = dataBak;
  // 表格重载
  table.reload("LAY_table_equipment_choose", {
    data : dataBak,
  })
  // 表格选中样式
  obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click');
});

注意:

tableBak = table.cache.LAY_table_equipment_choose;
table.cache.表格ID获取的是表格当页的所有数据,如果分页的话需要注意。

Layui表格之动态添加数据(表格多选解决方案)的更多相关文章

  1. SPA项目开发之动态树+数据表格+分页

    SPA项目开发之动态树+数据表格+分页 动态生成NavMenu导航菜单(只支持2级菜单) <el-menu key="" index=""> < ...

  2. ASP.NET网页动态添加数据行

    一看到这标题<ASP.NET网页动态添加数据行>,想起来似乎有点难实现.因为网页的周期性原因,往往在PostBack之后,状态难于有所保留.但Insus.NET又想实现这样的效果,用户点击 ...

  3. 关于devexpress报表XtraReport,动态修改报表样式(.repx格式),动态添加数据并使用的理解

    一.基本概念: XtraReports 中的每个报表都由 XtraRepot 类的一个实例表示,或者由该类的子类来表示(这种情况更常见). 因此,每个报表都作为带区的容器使用,而每个带区中都包含报表控 ...

  4. js表单动态添加数据并提交

    情景1:已经存在form对象了,动态为form增加对象并提交 function formAppendSubmit(){ var myform=$('#newArticleForm'); //得到for ...

  5. 【javascript 动态添加数据到 HTML 页面】

    今天简单的学习了一下有关对象字面量的定义和 javascript 如何取出对象字面量的值的知识,javascript 动态添加数据到 HTML 页面的问题. [学习目标]有如下的一组数据通过 Ajax ...

  6. 第27讲 UI组件之 ScrollView与底部动态添加数据

    第27讲 UI组件之 ScrollView与底部动态添加数据 1. ScrollView(滚动视图) ScrollView(滚动视图)是实现滚动的一个控件,只需要将需要滚动的控件添加到ScrollVi ...

  7. Android之ListView动态添加数据(SQLiteOpenHelper类添加数据)

    一.SQLiteOpenHelper类: 这次我们通过sqlite来动态添加数据,接下来我们创建一个openHelper.java,在前面sqlite博客中我们已经详细的讲了SQLite的创建及使用等 ...

  8. Jquery+Ajax实现Select动态添加数据

    https://blog.csdn.net/zhengxiangwen/article/details/46480687 最近在工作中,遇到了一个关于select的问题.一般情况下,select下拉框 ...

  9. MiniUI动态添加table表格

    本文将介绍一下,如何用Jquery MiniUi动态添加一行table表格 1.效果展示 ↓ 2.具体代码 <script type="text/javascript"> ...

随机推荐

  1. CodeForces 730G Car Repair Shop (暴力)

    题意:给定 n 个工作的最好开始时间,和持续时间,现在有两种方法,第一种,如果当前的工作能够恰好在最好时间开始,那么就开始,第二种,如果不能,那么就从前找最小的时间点,来完成. 析:直接暴力,每次都先 ...

  2. bzoj 1444: [Jsoi2009]有趣的游戏【AC自动机+dp+高斯消元】

    https://blog.sengxian.com/solutions/bzoj-1444 orz 一直是我想错了,建出AC自动机之后,实际上这个定义是设f[i]为经过i节点的 * 期望次数 * ,因 ...

  3. 洛谷P4303 [AHOI2006]基因匹配(树状数组)

    传送门 我已经连这种傻逼题都不会了orz 正常的dp是$O(n^2)$的,枚举第一个数组的$j$,然后第二个数组的$k$,如果相等,则$dp[i]=dp[j]+1$,否则$dp[i]=dp[j]$ 然 ...

  4. BIOS 和UEFI的区别

    BIOS先要对CPU初始化,然后跳转到BIOS启动处进行POST自检,此过程如有严重错误,则电脑会用不同的报警声音提醒,接下来采用读中断的方式加载各种硬件,完成硬件初始化后进入操作系统启动过程:而UE ...

  5. [POI2009]SLO

    Description 对于一个1-N的排列(ai),每次你可以交换两个数ax与ay(x<>y),代价为W(ax)+W(ay) 若干次交换的代价为每次交换的代价之和.请问将(ai)变为(b ...

  6. poj 2632 Crashing Robots 模拟

    题目链接: http://poj.org/problem?id=2632 题目描述: 有一个B*A的厂库,分布了n个机器人,机器人编号1~n.我们知道刚开始时全部机器人的位置和朝向,我们可以按顺序操控 ...

  7. Linux环境下Apache反向代理金蝶中间件Apusic集群

    操作系统:RedHat Enterprise Linux 5.6 文档参考:<金蝶Apusic应用服务器 帮助手册| IX. Apusic Http Server使用指南> 一.金蝶中间件 ...

  8. Spring日期格式初始化

    原文链接地址 一.初始化参数绑定[一种日期格式] 配置步骤: ①:在applicationcontext.xml中只需要配置一个包扫描器即可 1 2 <!-- 包扫描器 -->       ...

  9. 设置电脑IP

    1.首先在Win7桌面上找到“网络”入口,如下图:   进入Win7网络 2.进入网络之后我们再点击顶部的“网络共享中心”,如下图:   进入Win7网络共享中心 3.进入Win7网络共享中心之后,我 ...

  10. SpringSecurity的简单使用

    导入SpringSecurity坐标 在web.xml中配置过滤器 编写spring-securiy配置文件 编写自定义认证提供者 用户新增时加密密码 配置页面的login和logout 获取登录用户 ...