jQuery教程之jQuery datatables添加跳转到指定页功能
沉沙 2018-11-23 来源 : 阅读 1510 评论 0

摘要:本篇教程介绍了jQuery教程之jQuery datatables添加跳转到指定页功能,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入。

本篇教程介绍了jQuery教程之jQuery datatables添加跳转到指定页功能,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入。

<

项目中使用了jquery datatables 作为我们的数据表格组件,但是分页上没有跳转到指定页,需要自己重新写。解决方法如下:
在设置dataTables的默认属性里设置它的drawCallback方法来在后面拼接跳转元素,本方法是datatables 1.10往后的版本
本代码是针对spring mybatis pageHelper插件返回的PageInfo来进行处理的,返回的结构是{success:true, data : pageInfo},如果只是看自定义跳转,只需要看里面的drawCallback方法
/**
 * 设置jquery datatables的默认属性
 */
function set_default_dataTables() {
    var language = {// 汉化
        "processing": "处理中...",
        "lengthMenu": "显示 _MENU_ 条结果",
        "zeroRecords": "没有匹配结果",
        "info": "显示第 _START_ 至 _END_ 条结果,共 _TOTAL_ 条",
        "infoEmpty": "显示第 0 至 0 条结果,共 0 条",
        "infoFiltered": "(由 _MAX_ 项结果过滤)",
        "infoPostFix": "",
        "search": "搜索:",
        "url": "",
        "emptyTable": "表中数据为空",
        "loadingRecords": "载入中...",
        "thousands": ",",
        "paginate": {
            "first": "首页",
            "previous": "上一页",
            "next": "下一页",
            "last": "末页"
        }
    };
    $.extend($.fn.dataTable.defaults, {
        searching: false,
        ordering: false,
        language: language,
        lengthChange: false,
        lengthMenu: [5, 10, 15, 20, 50],
        pageLength: 15,
        serverSide: true,
        pagingType: "full_numbers",
        ajax: {
            data: function (param) {
                init_dataTables_defaultParam(param);
            },
            dataSrc: function (result) {
                if (result.success) {
                    var pageInfo = result.data;
                    result.recordsTotal = pageInfo.total;
                    result.recordsFiltered = pageInfo.total;
                    tableRowCount = pageInfo.list.length;
                    return pageInfo.list;
                } else {
                    result.recordsTotal = 0;
                    result.recordsFiltered = 0;
                    return [];
                }
            }
        },
        drawCallback: function (setting) {
            var _this = $(this);
            var tableId = _this.attr(‘id‘);
            var pageDiv = $(‘#‘ + tableId + ‘_paginate‘);
            pageDiv.append(
                ‘跳转到<input id="‘ + tableId + ‘_gotoPage" type="text" style="height:28px;line-height:28px;width:40px;"/>‘ +
                ‘<a class="paginate_button" aria-controls="‘ + tableId + ‘" tabindex="0" id="‘ + tableId + ‘_goto">确定</a>‘)
            $(‘#‘ + tableId + ‘_goto‘).click(function (obj) {
                var page = $(‘#‘ + tableId + ‘_gotoPage‘).val();
                var thisDataTable = $(‘#‘ + tableId).DataTable();
                var pageInfo = thisDataTable.page.info();
                if (isNaN(page)) {
                    $(‘#‘ + tableId + ‘_gotoPage‘).val(‘‘);
                    return;
                } else {
                    var maxPage = pageInfo.pages;
                    var page = Number(page) - 1;
                    if (page < 0) {
                        page = 0;
                    } else if (page >= maxPage) {
                        page = maxPage - 1;
                    }
                    $(‘#‘ + tableId + ‘_gotoPage‘).val(page + 1);
                    thisDataTable.page(page).draw(‘page‘);
                }
            })
        }
    });
}

/**
 * 移除 dataTables默认参数,并设置分页值
 * @param param
 */
function init_dataTables_defaultParam(param) {
    for (var key in param) {
        if (key.indexOf("columns") == 0 || key.indexOf("order") == 0 || key.indexOf("search") == 0) { //以columns开头的参数删除
            delete param[key];
        }
    }
    param.pageSize = param.length;
    param.pageNum = (param.start / param.length) + 1;
}    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端jQuery频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程