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的面向对象的特性实现限制试用期
Aug 04 Javascript
JQUERY 设置SELECT选中项代码
Feb 07 Javascript
浅析javascript中函数声明和函数表达式的区别
Feb 15 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
Feb 23 Javascript
分享一则JavaScript滚动条插件源码
Mar 03 Javascript
javascript实现简单的进度条
Jul 02 Javascript
javascript实现简单的分页特效
Aug 12 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
Nov 18 Javascript
vue-router实现组件间的跳转(参数传递)
Nov 07 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 jQuery
ios中视频的最后一桢问题解决
May 14 Javascript
vue实现路由懒加载及组件懒加载的方式
Jun 11 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通用检测函数集合
2011/02/08 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
Vue.js的模板语法详解
2020/02/16 Javascript
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
python 为什么说eval要慎用
2019/03/26 Python
简单了解python反射机制的一些知识
2019/07/13 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
Python Merge函数原理及用法解析
2020/09/16 Python
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
联想中国官方商城:Lenovo China
2017/10/18 全球购物
农行实习自我鉴定
2013/09/22 职场文书
英文简历自荐信范文
2013/12/11 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
运动会报道稿大全
2015/07/23 职场文书
2016大学军训心得体会
2016/01/11 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
MySQL修炼之联结与集合浅析
2021/10/05 MySQL