layui select 的 placeholder 实为 value="" 的首项 option,需删除该选项或设默认选中项;原生 input 可直接删 placeholder 属性,但 js 动态注入的需在 success 回调中移除,且注意 form.render() 不会清除已注入属性。

直接删掉 placeholder 属性即可,但要注意:Layui 的 select、laydate 等组件不读取该属性,删了也无效;而原生 input 删掉后提示就没了——前提是没用 JS 动态注入。
原生 input 的 placeholder 怎么彻底去掉
如果只是 HTML 里写了 placeholder="请输入用户名",删掉这行属性就行。但常见情况是:用了 layer.prompt 或自定义弹窗,JS 动态加了 placeholder 属性,此时光删 HTML 没用。
- 检查是否在
layer.prompt的success回调里执行了input.attr('placeholder', ...),删掉或注释掉那行 - 如果用了
layui.table的编辑模式,placeholder 是通过列配置edit: 'text'+ 自定义模板注入的,得改templet或去掉unresize相关 hack - 某些 UI 覆盖层(比如自定义 skin)可能全局设置了
::-webkit-input-placeholder,导致即使没写属性也显示文字,这时要查 CSS
layui select 的“placeholder”不是真 placeholder
Layui 下拉框根本没有原生 placeholder 支持,你看到的“请选择”其实是首项 <option value="">请选择</option>。想“去掉提示”,本质是去掉这个空值选项。
- 删掉
<option value=""></option>这一项,但注意:这样会导致表单初始值为空字符串,form.val()取不到默认占位状态 - 如果业务允许初始选中某项,直接设
<option value="1" selected>男</option>,空项自然不显示 - 若必须初始为空又不想显示“请选择”,只能放弃原生
select,换formSelects插件并配placeholder: "",或用绝对定位 DOM 覆盖方案
动态渲染后 placeholder 又冒出来
调用 form.render() 或 form.render('select') 时,Layui 会重绘下拉结构,但不会清除 JS 注入的 placeholder 属性——尤其在 layer.open 里反复打开弹窗时容易复现。
- 每次打开前,先用
layero.find('input[placeholder]').removeAttr('placeholder')主动清理 - 避免在
success回调里无条件设placeholder,加个判断:仅当 input 当前没有placeholder属性时才设置 - 如果用了
laydate,它的输入框 placeholder 是模块内置的,得通过trigger: 'focus'或手动清空elem.next().find('input').removeAttr('placeholder')
最易被忽略的是:Layui 表单验证依赖 lay-verify 和元素状态,强行移除 placeholder 后若未同步触发 change 或重置验证类(如 layui-form-danger),用户点提交时仍可能看到残留提示边框。











