bootstrap table插件的分页与checkbox使用详解


Posted in Javascript onJuly 23, 2017

今天需要实现这样一个功能,有checkbox列表可供选择,要选择不分页之间的行并保存

最终实现的功能如图:(图片来自网上)

bootstrap table插件的分页与checkbox使用详解

具体实现

首先,来看具体的代码,这里只截取实现功能所需代码

var selectionIds =[],selectionNames=[];
  var curd = {
    init:function(){
      this._getCheckParam();
    },

    /**
     * 初始化
     * @private
     */

  /**
   * 表格操作
   */
  //表格分页之前处理多选框数据
  _responseHandler:function()(res) {
    $.each(res.rows, function (i, row) {
      row.checkStatus = $.inArray(row.id, selectionIds) != -1; //判断当前行的数据id是否存在与选中的数组,存在则将多选框状态变为true
    });
    return res;
  },
    _list:function(){
      var _this = this
      var settings = {
        url:Path.searchUrl,
        method:'GET',
        responseHandler:_this.responseHandler, //在渲染页面数据     之前执行的方法
        height:Path.tbheight
      };
      bsTable.initTable("#boostrapTable",settings);
      // 其它的boostrapTable参数已经封装在bsTable里面了,这里就不贴出来了
    },
    /**
     * 获取选中ID
     * @returns {*}
     * @private
     */
    _getIdSelections:function() {
        // 用map进行过滤
        return $.map($('#bootstrapTable').bootstrapTable('getSelections'), function (row) {
          return row.id
        });
      },
    /**
     * 获取选中对象并显示
     * @private
     */
    _getCheckParam:function(){
      var union = function(array,ids){
        $.each(ids, function (i, id) {
          if($.inArray(id,array)==-1){
            array[array.length] = id;
          }
        });
        return array;
      };
      //取消选中事件操作数组
      var difference = function(array,ids){
        $.each(ids, function (i, id) {
          var index = $.inArray(id,array);
          if(index!=-1){
            array.splice(index, 1);
          }
        });
        return array;
      };
      var _ = {"union":union,"difference":difference};
      var $table=$('#bootstrapTable');
      //绑定选中事件、取消事件、全部选中、全部取消
      $table.on('check.bs.table check-all.bs.table uncheck.bs.table uncheck-all.bs.table', function (e, rows) {
        var ids = $.map(!$.isArray(rows) ? [rows] : rows, function (row) {
          return row.id;
        });
        var names = $.map(!$.isArray(rows) ? [rows] : rows, function (row) {
          return row.name;
        });
        func = $.inArray(e.type, ['check', 'check-all']) > -1 ? 'union' : 'difference';
        selectionIds = _[func](selectionIds, ids);
        selectionNames =_[func](selectionNames,names);
      });
    }
  };
      return curd;

});

比较常用的技巧

使用boostrapTable时候,选择表格的行,返回的rows有很多,这时候需要过滤出我们需要的字段,可以用

function getIdSelections() {
    return $.map($table.bootstrapTable('getSelections'), function (row) {
      return row.id
      // 想返回什么字段就换成什么
    });
  }

当然,如果需要对选出的数据有限制筛选,用filter过滤也不错

var arr = [1,2,3,4,5,4,3,2,1];
var filterResult = arr.filter(function(item,index,array){
  return (item>2);
});
console.log(filterResult);  
//[3,4,5,4,3],返回所有数值都大于2的一个数组

相关讨论

如果想了解更多细节,可以看看GitHub上的issue

如何保存用户的复选框问题

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
从JavaScript的函数重名看其初始化方式
Mar 08 Javascript
理解Javascript_08_函数对象
Oct 15 Javascript
深入document.write()与HTML4.01的非成对标签的详解
May 08 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
Nov 05 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
Nov 02 Javascript
跟我学习javascript的基本类型和引用类型
Nov 16 Javascript
利用JQuery写一个简单的异步分页插件
Mar 07 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
Apr 13 Javascript
基于angular实现三级联动的生日插件
May 12 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
Sep 05 Javascript
微信小程序实现收藏与取消收藏切换图片功能
Aug 03 Javascript
javascript触发模拟鼠标点击事件
Jun 26 Javascript
关于JavaScript中的this指向问题总结篇
Jul 23 #Javascript
浅析JS中常用类型转换及运算符表达式
Jul 23 #Javascript
js实现带进度条提示的多视频上传功能
Dec 13 #Javascript
基于javaScript的this指向总结
Jul 22 #Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
Jul 22 #jQuery
基于LayUI实现前端分页功能的方法
Jul 22 #Javascript
浅谈原型对象的常用开发模式
Jul 22 #Javascript
You might like
PHP输入输出流学习笔记
2015/05/12 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
Js冒泡事件详解及阻止示例
2014/03/21 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
node中modules.exports与exports导出的区别
2018/06/08 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
学习python可以干什么
2019/02/26 Python
python3 使用traceback定位异常实例
2020/03/09 Python
Python包和模块的分发详细介绍
2020/06/19 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
同事去世追悼词
2015/06/23 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL