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 13 Javascript
JavaScript 浏览器验证代码(来自discuz)
Jul 17 Javascript
JavaScript学习笔记之JS函数
Jan 22 Javascript
AngularJS基础 ng-mouseover 指令简单示例
Aug 02 Javascript
详解jQuery停止动画——stop()方法的使用
Dec 14 Javascript
js a标签点击事件
Mar 30 Javascript
基于JavaScript实现微信抢红包功能
Jul 20 Javascript
基于BootStrap实现简洁注册界面
Jul 20 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
Jan 16 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
Nov 16 Javascript
JavaScript实现简单的音乐播放器
Aug 14 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
Python中暂存上传图片的方法
2015/02/18 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
Python正则简单实例分析
2017/03/21 Python
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
暑期实习鉴定
2013/12/16 职场文书
学校党支部承诺书
2015/04/30 职场文书
2015年除四害工作总结
2015/07/23 职场文书
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python