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 相关文章推荐
qTip2 精致的基于jQuery提示信息插件
Feb 17 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
May 23 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
Dec 27 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
Aug 01 Javascript
jquery显示loading图片直到网页加载完成的方法
Jun 25 Javascript
JavaScript你不知道的一些数组方法
Aug 18 Javascript
Angular5集成eventbus的示例代码
Jul 19 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
Aug 29 Javascript
js使用swiper实现层叠轮播效果实例代码
Dec 12 Javascript
js计算最大公约数和最小公倍数代码实例
Sep 11 Javascript
vue-cli创建的项目中的gitHooks原理解析
Feb 14 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 Vue.js
关于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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
php中filter_input函数用法分析
2014/11/15 PHP
php微信公众平台开发类实例
2015/04/01 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
2019/02/16 PHP
类之Prototype.js学习
2007/06/13 Javascript
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
Python 字符串中的字符倒转
2008/09/06 Python
Python常用模块用法分析
2014/09/08 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
Python处理文本文件中控制字符的方法
2017/02/07 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
python sort、sort_index方法代码实例
2019/03/28 Python
使用C#编写创建一个线程的代码
2013/01/22 面试题
小学老师寄语大全
2014/04/04 职场文书
代领毕业证委托书
2014/08/02 职场文书
节约每一滴水演讲稿
2014/09/09 职场文书
中班教师个人总结
2015/02/05 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
检讨书模板大全
2015/05/07 职场文书
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers