page.limits数组是唯一控制分页下拉菜单选项的配置,必须为包含至少两个数字的数组(如[8,16,32,64]),且limit值须为其元素之一;改request.limit或单独设page.limit无效。
page.limits 数组才是控制下拉选项的唯一配置,改 request.limit 或 page.limit 单独值完全没用。
limits 必须是数字数组,且长度 ≥ 2 才渲染可展开下拉
常见错误是传字符串数组(如 ["10", "20", "50"])、null、undefined 或直接省略该字段,结果下拉菜单仍是默认的 [10, 20, 30, 40, 50]。Layui 只认纯数字数组,比如:[5, 10, 20, 50]。
注意:limits: [10] 会渲染一个带箭头但无法点击的输入框(视觉残留),limits: [] 才真正隐藏下拉框;limits: [10, 20] 是最小有效组合。
limit 值必须在 limits 数组中存在,否则 UI 自动 fallback 到第一个值
例如配置了 limits: [8, 16, 32],但写 limit: 15,分页器初始化时不会报错,但会静默选中 8,且下拉菜单无法回显当前值,页码文案也可能异常。
-
limit必须是正整数,不能是字符串或小数 - 首次渲染时,
limit和limits必须同时出现在page对象里,不能只靠page: true简写 - 如果后端参数名不是
limit(如叫pageSize),需同步配request: { limitName: 'pageSize' },否则请求发出去的仍是limit=xx,后端收不到
动态改 limits 选项必须销毁重建,reload 无效
table.reload() 传新 limits 完全不生效——DOM 和内部状态不会更新,点新选项可能发旧值或无响应。
正确做法是:
- 先调
table.destroy('demo')(参数必须是表格容器的id或lay-id) - 清空容器内非表格 DOM(如自定义按钮、提示文字),避免样式干扰
- 再用完整新配置重新
table.render(),包括cols、url、request等关键项,漏一项就变空白 - 若原表格有排序、搜索状态,需手动保存并在新 render 中还原
移动端慎设过多 limits 选项
超过 4 个选项(如 [5, 10, 15, 20, 30, 50])在小屏上容易导致下拉弹层被截断,用户点不到最末项。实测中,[10, 20, 50] 在多数移动设备上表现最稳。
别指望靠 CSS 强行撑高下拉区域——.layui-laypage-limits 是固定高度,硬改易破坏整体布局,也解决不了视口溢出问题。
真正难的不是写对配置,而是记住:limits 控制「能选什么」,limit 决定「当前选哪个」,而 request.limitName 决定「后端能不能收到」——三者缺一,UI 就和接口对不上。











