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 相关文章推荐
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
Dec 07 Javascript
风吟的小型JavaScirpt库 (FY.JS).
Mar 09 Javascript
读jQuery之二(两种扩展)
Jun 11 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
Jul 30 Javascript
js实现拉幕效果的广告代码
Sep 02 Javascript
js+html5实现的自由落体运动效果代码
Jan 28 Javascript
javascript每日必学之运算符
Feb 16 Javascript
Vue 表单控件绑定的实现示例
Aug 11 Javascript
vue 2.0项目中如何引入element-ui详解
Sep 06 Javascript
深入理解Vue.js源码之事件机制
Sep 27 Javascript
微信小程序点击保存图片到本机功能
Dec 13 Javascript
jQuery实现带进度条的轮播图
Sep 13 jQuery
关于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调用MySQL存储过程的方法集合(推荐)
2013/07/03 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
GWT都有什么特性
2016/12/02 面试题
医学毕业生自我鉴定
2013/10/30 职场文书
主管会计岗位职责
2014/03/13 职场文书
市场开发计划书
2014/05/07 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
部队2015年终工作总结
2015/04/02 职场文书
教师读书笔记
2015/06/29 职场文书
MySQL 存储过程的优缺点分析
2021/05/20 MySQL
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python