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 相关文章推荐
实现超用户体验 table排序javascript实现代码
Jun 22 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
Mar 05 Javascript
js prototype截取字符串函数
Apr 01 Javascript
让textarea自动调整大小的js代码
Apr 12 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
Sep 14 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
Jan 06 Javascript
javascript表单事件处理方法详解
May 15 Javascript
js实现加载更多功能实例
Oct 27 Javascript
浅析vue数据绑定
Jan 17 Javascript
angular.js+node.js实现下载图片处理详解
Mar 31 Javascript
vue实现页面加载动画效果
Sep 19 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 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
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
在Django中创建动态视图的教程
2015/07/15 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
Python函数参数操作详解
2018/08/03 Python
Python装饰器用法实例分析
2019/01/14 Python
python中 * 的用法详解
2019/07/10 Python
python django中8000端口被占用的解决
2019/12/17 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
自荐信的两点禁忌
2013/10/30 职场文书
五年级学生评语
2014/04/22 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
陕西导游词
2015/02/04 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
JavaScript文档对象模型DOM
2021/11/20 Javascript
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL