自定义Bootstrap-Table扩展——分页跳转到指定页码

需要添加bootstrap-table-pagejump.js和bootstrap-table-pagejump.css

bootstrap-table-pagejump.js

(function ($) {
  'use strict';
  $.extend($.fn.bootstrapTable.defaults, {
    // 默认不显示
    paginationShowPageGo: false
  });

  $.extend($.fn.bootstrapTable.locales, {
    pageGo: function () {
      // 定义默认显示文字,其它语言需要扩展
      return '跳转到';
    }
  });
  $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);

  var BootstrapTable = $.fn.bootstrapTable.Constructor,
      _initPagination = BootstrapTable.prototype.initPagination;

  // 扩展已有的初始化分页组件的方法
  BootstrapTable.prototype.initPagination = function() {
    _initPagination.apply(this, Array.prototype.slice.apply(arguments));
    // 判断是否显示跳转到指定页码的组件
    if(this.options.paginationShowPageGo){
      var html = [];
      // 渲染跳转到指定页的元素
      html.push(
          '<div style="display: inline-block;">',
          '<ul class="pagination-jump">',
          '<li class=""><span>' + this.options.pageGo() + ':</span></li>',
          '<li class=""><input type="text" class="page-input" value="' + this.options.pageNumber + '"   /></li>',
          '<li class="page-go"><a class="jump-go" href="">GO</a></li>',
          '</ul>',
          '</div>');

      // 放到原先的分页组件后面
      //this.$pagination.find('ul.pagination').after(html.join(''));
      this.$pagination.find('div.pagination-detail').after(html.join(''));

      // 点击按钮触发跳转到指定页函数
      this.$pagination.find('.page-go').off('click').on('click', $.proxy(this.onPageGo, this));
      // 手动输入页码校验,只允许输入正整数
      this.$pagination.find('.page-input').off('keyup').on('keyup', function(){
        this.value = this.value.length == 1 ? this.value.replace(/[^1-9]/g,'') : this.value.replace(/\D/g,'');
      });
    }
  };

  // 自定义跳转到某页的函数
  BootstrapTable.prototype.onPageGo = function (event) {
    // 获取手动输入的要跳转到的页码元素
    var $toPage=this.$pagination.find('.page-input');
    // 当前页不做处理
    if (this.options.pageNumber === +$toPage.val()) {
      return false;
    }
    // 调用官方的函数
    this.selectPage(+$toPage.val());
    return false;
  };
})(jQuery);

bootstrap-table-pagejump.css

.pagination-jump {
    margin: 0;
}
.pagination-jump {
    display: inline-block;
    padding-left: 1px;
    border-radius: 4px;
}
.pagination-jump>li {
    display: inline;
}
.pagination-jump>li>a, .pagination-jump>li>input, .pagination-jump>li>span {
    position: relative;
    float: left;
    margin-left: -1px;
    line-height: 1.42857143;
    text-decoration: none;
}
.pagination-jump>li>a {
    padding: 6px 12px;
    border: 1px solid #ddd;
    border-top-right-radius: 4px;
    border-bottom-right-radius: 4px;
}
.pagination-jump>li>input {
    padding: 6px 0px;
    border: 1px solid #ddd;
    border-top-left-radius: 4px;
    border-bottom-left-radius: 4px;
    width: 36px;
    text-align: center;
    background-color: #ffffff;
}
.pagination-jump>li>span{
    padding: 6px 3px 6px 12px;
}
.pagination-jump>li>.jump-go {
    margin-left: 0;
    padding: 6px;
    background-color: #1E9FFF;
    border-color: #1E9FFF;
    color: #ffffff;
}

界面html

//初始化表格
function initTable() {
    $PageTable = $('#selectDataTable'); //table对应id
    var columns = [
        {
            field: 'no',
            title: '序号',
            align: 'center',
            width: '50px',
            formatter:function(value,row,index){
                var options = $('#selectDataTable').bootstrapTable('getOptions');
                return options.pageSize * (options.pageNumber - 1) + index + 1;
            }
        }]; 
    $PageTable.bootstrapTable('destroy');
    $PageTable.bootstrapTable({
        columns: columns,
        url: '后台调用方法',
        method: 'get',//服务器数据的请求方式 'get' 或 'post'。
        striped: true, //设置为 true 会有隔行变色效果
        pagination: true,//设置为 true 会在表格底部显示分页条。
        dataType: 'json',   //服务器返回的数据类型。
        cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性
        sidePagination: 'server',
        pageNumber: 1,  //初始化加载第一页,默认第一页
        pageSize: 10, //每页的记录行数
        paginationShowPageGo: true, //跳转页码
        maintainSelected: true,
        fixedColumns: true,
        fixedNumber: 2,
        queryParams: queryParams
    });
    $PageTable.on('uncheck.bs.table check.bs.table check-all.bs.table uncheck-all.bs.table', function (e, rows) {
        var datas = $.isArray(rows) ? rows : [rows]; // 点击时获取选中的行或取消选中的行
        examine(e.type, datas);// 保存到全局 Array() 里
    }); 
}

效果图
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值