layer.prompt 传默认值必须使用 value 参数,且需为字符串类型,作为顶层配置项直接传入;写错位置、类型不符或版本过低均会导致失效。
layer.prompt 怎么传默认值?
直接用 value 参数,不是 content 也不是 title。这个参数名容易被忽略,文档里没加粗,但它是唯一生效的默认文本入口。
-
value是字符串类型,传进去就会自动填充到输入框中 - 如果传空字符串
'',输入框为空;传'admin',就显示 “admin” - 不传
value,输入框一定为空,哪怕你在content里写了提示文字也没用
为什么 value 不生效?常见原因
多数人卡在这里:写了 value 却没显示,默认值“消失”了。根本原因通常是参数写错位置或类型不对。
- 把
value写在了content里(比如content: '请输入用户名 value: admin')——这纯属无效字符串,layer 不解析 - 用了
data-value或defaultValue这类 DOM 属性——layer.prompt不认这些,只认配置对象里的value - 传了非字符串值,比如数字
123或对象{}——会转成"[object Object]"或"123",但部分版本可能直接 fallback 为空
完整可运行示例
下面这段代码能直接复制进控制台验证:
layer.prompt({
title: '请输入邮箱',
value: 'user@example.com', // ← 就是这里
maxlength: 50,
area: ['400px', 'auto'],
yes: function(value, index, elem) {
console.log('输入值:', value);
layer.close(index);
}
});
注意:value 必须是顶层配置项,不能嵌套在 skin、btn 等其他对象里;也别和 text 混用(text 是按钮文字,和输入内容无关)。
兼容性与边界情况
旧版 Layui(比如 2.5.5 之前)对 value 支持不稳定,个别 patch 版本会忽略它。如果你发现始终不生效,先确认版本:
- 查
window.layer.v或看引入的 JS 文件名,确保 ≥ 2.5.5 - 若必须兼容老版本,可用
success回调 + DOM 操作临时补救:success: function(layero) { $(layero).find('input').val('xxx'); } - 移动端下软键盘弹出时,部分安卓机型可能延迟渲染,默认值闪一下才出现——这不是 bug,是 focus 时机问题,不用强行修复
真正要注意的,是 value 的时机:它只在弹层初始化时读取一次,后续修改配置对象里的 value 不会同步到输入框。











