layer.prompt 默认值需用 value 字段且必须为字符串,如 { value: '123' };数字布尔值须转字符串,变量用 String(val) 或 val + '';空字符串会清空输入框,undefined/null 不填充。
layer.prompt 怎么传默认值
直接在 layer.prompt 的配置对象里加 value 字段,不是 default 也不是 initvalue,别试错。
这个字段只接受字符串,哪怕你想填数字或布尔值,也得先转成字符串,否则输入框空着——这是最常踩的坑。
-
value必须是字符串类型,{ value: 123 }不生效,得写成{ value: '123' } - 如果值来自变量,记得显式
String(val)或val + '',尤其从接口取的 number 类型数据 - 空字符串
''是合法值,会清空输入框;undefined或null则不触发默认填充
为什么 value 有时不显示
常见原因是 layer 版本低(layer.prompt 不支持 value,只认 value 在 layer.open 的 content 里手动拼 DOM——但那已经不是原生 prompt 行为。
- 确认你用的是 Layui 2.8+(官网下载页标了「prompt 支持 value」)
- 别把
layer.prompt和layer.open混用:后者要自己写 input 标签,前者是封装好的函数,参数结构完全不同 - 检查是否被 CSS 覆盖:比如
input被设了color: transparent,看着像没值
配合回调取值时要注意什么
layer.prompt 的回调函数第二个参数是输入框的 DOM 元素,不是值本身。想拿当前值,得手动 .value,别以为回调第一个参数就是输入内容。
- 回调签名是
function(value, index, elem),其中value是用户点确定时的字符串值,不是初始默认值 - 初始默认值只影响弹出瞬间的显示,不影响回调逻辑
- 如果需要在点击确定前校验默认值是否被修改,得用
elem.value对比初始化时存的原始值
移动端键盘弹起后默认值消失怎么办
部分安卓 WebView 下,软键盘唤起导致页面重排,layer.prompt 内部 input 可能被重建,初始 value 丢失。这不是 bug,是渲染机制问题。
- 临时解法:在
success回调里手动赋值一次,例如elem.value = options.value || '' - 更稳的做法:不用
value,改用layer.open自定义 content,控制 input 的生命周期 - 注意别在
ready钩子外操作 input,layer 的 DOM 插入是异步的
默认值这事看着简单,但跨版本、跨端、跨调用方式时,差一个字符串类型或一个版本号,就白调试半小时。


















