步骤条不提供原生“下一步”事件监听,需通过手动绑定按钮点击或表单提交事件,在调用 steps 实例的 next() 方法前后插入业务逻辑;推荐优先使用 form.on('submit(filter)') 抓取切换时机,次选 mutationobserver 监听 layui-this 类变化。
步骤条本身不提供「下一步」事件监听,step 组件原生只响应初始化和状态更新,切换动作需靠手动绑定或拦截按钮行为。
用 step.next() 主动触发并捕获切换时机
如果你用的是 layui 官方扩展的 steps 模块(非第三方),它没有内置的「下一步」回调,但提供了 next() 方法。你可以封装自己的按钮点击逻辑,在调用 next() 前/后插入业务代码:
- 确保已通过
layui.use(['steps'], callback)加载模块 -
steps.render()后拿到实例,比如var ins = steps.render({...}) - 不要直接监听 DOM click,而是把「下一步」按钮的
onclick或form.on('submit', filter)作为入口 - 在回调里先执行
ins.next(),再做数据校验、异步加载或 DOM 更新
监听表单提交事件替代「下一步」动作
多数分步表单场景中,「下一步」实际是提交当前步表单。Layui 的 form.on('submit(filter)') 是最稳定抓手:
-
filter必须与表单lay-filter="xxx"值完全一致 - 回调里可调用
ins.next(),也可根据验证结果return false阻止切换 - 注意:如果用了
stepform扩展组件,它内部会自动绑定 submit,此时应监听其自定义事件(如stepform.on('next')),但该事件非 layui 官方 API,依赖具体扩展实现
监听步骤索引变化的兜底方案
当无法控制按钮或需要全局响应时,可用轮询或 MutationObserver 监测步骤容器类名变化:
- 步骤激活项通常带
layui-this类,例如.layui-steps-item.layui-this - 用
setInterval检查$('.layui-steps-item.layui-this').index()是否变动(性能低,仅调试用) - 更优方式:监听
.layui-steps下子节点的class变更,用MutationObserver观察attributes,过滤出含layui-this的变更 - 此法绕过组件限制,但耦合 DOM 结构,Layui 升级后可能失效
真正可靠的监听永远来自你控制的触发点——按钮点击或表单提交。依赖组件内部状态变更容易漏掉手动调用 next() 或编程式切换的场景,这点很容易被忽略。











