layui表格分页最多显示的页码个数由laypage的groups参数控制,默认为5;需禁用table自动分页(page: false),手动调用laypage.render()并设置groups才生效,否则groups被忽略。

layui分页最多显示几个页码由 laypage 的 groups 参数控制
表格(table.render())自身没有 groups 配置项,这个逻辑完全交给底层的 laypage 组件处理。默认值是 5,也就是连续显示最多 5 个页码数字(如 … 7 8 9 10 11 …),超出部分用省略号折叠。
想改成显示 3 个或 7 个,必须手动接管分页渲染——禁用 table 自带分页,改用 laypage.render() 并显式传入 groups。
必须关掉 table 的自动分页,否则 groups 不生效
常见错误:只加了 laypage.render({ groups: 3 }),但没动 table.render() 里的 page 配置,导致两个分页 DOM 共存、事件冲突、groups 被忽略。
-
table.render()中设page: false,让表格只负责展示数据,不渲染分页栏 - 自己准备一个容器(比如
<div id="pageDemo"></div>)给laypage.render()用 - 确保
count值有效(不能为0或undefined),否则laypage会退化为简版,groups失效
laypage.render() 的关键配置写法
下面是最小可用示例,把连续页码数设为 3:
laypage.render({
elem: 'pageDemo',
count: total, // 后端返回的总条数,必须是数字
curr: 1,
groups: 3, // ✅ 就是它,控制连续显示几个页码
jump: function(obj) {
table.reload('demo', {
where: { page: obj.curr },
page: { curr: obj.curr }
});
}
});
注意:jump 回调里必须调用 table.reload(),不能直接改 table.config.page.curr;where 中的 page 字段名要和后端约定一致(默认是 page,若后端收 currentPage,需配 request: { pageName: 'currentPage' })。
为什么改了 groups 还是没变?
最常踩的坑不是写错参数,而是环境没清理干净:
-
table.render()没设page: false,导致自带分页 DOM 和你手写的laypage容器同时存在 -
count是0、null或接口还没返回就调了laypage.render() - 页面上多个
laypage实例用了同一个elemID,后渲染的覆盖前一个 - 自定义了
layout但漏了'page',结果页码栏压根没渲染出来
真正起作用的只有 laypage.render() 里的 groups,别在 table.page 或 request 里找它——那俩地方根本没这个字段。











