设 formType: 1 即可使 layer.prompt 输入框变为密码类型,渲染为 <input type="password"> 并自动掩码;formType: 0 为文本框,2 为多行文本域;旧版 Layui 可能导致 placeholder 不显示。
layer.prompt 怎么让输入框变成密码类型
直接设 formtype: 1 就行,这是 layui 官方定义的密码模式,不是靠改 type="password" 或 css 模拟。
formType 参数取值和实际效果差异
这个参数控制底层 input 的 type 行为,但不同值触发的 DOM 结构略有区别:
-
formType: 0→ 渲染为<input type="text">(默认) -
formType: 1→ 渲染为<input type="password">,字符自动掩码 -
formType: 2→ 渲染为<textarea>,支持多行,但不掩码
注意:formType 是 layer.prompt 唯一受控的输入类型开关,不要尝试在 success 回调里手动改 elem.type,layer 内部提交逻辑只认初始化时的 formType 类型。
常见错误:placeholder 不显示或输错后清空
设了 formType: 1 却看不到 placeholder,大概率是用了旧版 Layui(
- 新版支持直接传
placeholder: '请输入密码'参数(2021 年后版本) - 老版本必须用
success回调 +setTimeout延迟注入,否则 DOM 还没渲染完就查不到 input 元素 - 如果输错后点确认又弹回,检查回调里是否漏掉
layer.close(index),否则层会残留并重置输入框
密码框提交后拿不到值?检查回调签名和关闭时机
layer.prompt 的回调函数签名固定为 function(value, index, elem),其中 value 就是密码字符串。容易出问题的地方:
- 误把
elem当成 DOM 元素去取.value—— 其实elem就是那个<input>,但value参数已包含内容,无需再查 - 在回调里异步操作(比如发请求)后才调
layer.close(index),用户可能重复点击确认按钮,导致多次提交 - 没加防抖或禁用按钮,弱网下连续点击会触发多个请求
真正要小心的是 formType=1 下的移动端兼容性:部分安卓 WebView 对 password input 的光标定位、粘贴行为支持不一致,测试时别只看桌面 Chrome。


















