layer.confirm 的 btn 参数直接决定按钮文案,为字符串数组,默认['确定','取消'],长度须≥2,支持HTML但需防XSS;多按钮需匹配回调函数数量并正确命名yes、btn2、btn3;可全局配置layer.config({btn:['OK','Cancel']})。
layer.confirm 的 btn 参数直接改文字
按钮文案不是靠 css 或额外插件,而是由 btn 配置项决定的。它是一个字符串数组,顺序对应弹窗中从左到右的按钮,默认是 ['确定', '取消']。
想改成英文或业务化文案(比如「永久删除」「我再想想」),只需在第二参数对象里传入 btn:
layer.confirm('确定要归档吗?', {
btn: ['归档', '暂不处理']
}, function(index) {
// 点击「归档」触发
layer.close(index);
});
-
btn数组长度必须 ≥2,否则第二个按钮(取消)会丢失,且cancel回调可能不触发 - 数组元素可以是纯字符串,也支持带 HTML 的字符串(如
'<span style="color:red">删除</span>'),但要注意 XSS,仅限静态内容 - 如果只传一个字符串(如
btn: ['确认']),则取消按钮消失,右上角 × 仍保留,但点击后不会触发cancel回调——除非你显式配置了cancel
三个按钮时怎么配 btn 和回调
要加第三个按钮(比如「跳过」),必须严格匹配 btn 数组长度和回调函数数量。Layui 不识别 btn3 以外的命名,只认 yes、btn2、btn3 这三个固定键名。
layer.confirm('操作有风险,确认继续?', {
btn: ['继续', '重填', '放弃']
}, function(index) {
// 第一个按钮:继续
layer.close(index);
}, function(index) {
// 第二个按钮:重填 → 对应 btn2
layer.close(index);
}, function(index) {
// 第三个按钮:放弃 → 对应 btn3
layer.close(index);
});
- 漏写任意一个回调(尤其是
btn3),第三个按钮点击后无反应,控制台也不报错,极难排查 - 每个回调都必须接收
index并调用layer.close(index),否则弹窗残留 -
cancel回调只响应右上角 ×,和第三个按钮无关;别把它和btn3混用
全局修改默认按钮文字(如中英切换)
如果你整个项目都要把「确定/取消」换成英文,又不想每个 layer.confirm 都手动写 btn,可以用 Layui 的国际化机制——但注意:Layui 官方 i18n 支持有限,更稳妥的是覆盖 layer.config 中的默认 btn。
在引入 Layui 后、调用任何 layer 方法前执行:
layer.config({
btn: ['OK', 'Cancel']
});
- 这会影响所有未显式传
btn的layer.confirm、layer.open等弹层 - 后续某次调用若仍传了
btn,则以传入值为准,优先级高于config - 不要在异步加载完成后再改 config,否则部分弹层已按旧配置渲染,文字不会刷新
按钮文字换行或加图标怎么搞
Layui 默认按钮不支持自动换行,但允许你在 btn 数组里传含 HTML 的字符串,只要样式能撑开就行。
layer.confirm('是否启用该功能?', {
btn: [
'<button style="padding:6px 12px; line-height:1.4;">启用<br><small style="font-size:12px">(立即生效)</small></button>',
'稍后再说'
]
}, function(index) {
layer.close(index);
});
- 内联样式必须写全,
line-height和padding要配合,否则文字挤在一起或被截断 - 避免用
<br>外的块级标签(如<div>),Layui 按钮容器是 <code><a></a>,嵌套块级元素可能破坏布局 - 图标推荐用字体图标(如
),直接拼在字符串里比引入 SVG 更轻量
按钮文字看着简单,但一动就容易漏掉
btn2/btn3 回调、或忘了 layer.close(index),尤其多人协作时,这些细节往往藏在某次点击没反应的深夜调试里。











