关闭layui下拉框自动补全需三步协同:1.设lay-search="false"属性;2.调form.render('select');3.手动移除残留输入框dom,缺一不可。

关闭 Layui 下拉框的自动补全搜索,本质是关掉 lay-search 的 DOM 级过滤行为。只改属性或只删输入框都不行,必须三步协同——否则要么留白框,要么下次 form.render() 又弹回来。
为什么 search: false 在 select.render() 里没用
Layui 2.8–2.9 主流版本的 select.render() 不识别 search: false 配置项。这个参数是 3.0+ 才加的,当前线上项目基本跑在 2.8.x 上,写了等于白写。文档没标清版本差异,容易踩坑。
正确关闭流程(三步缺一不可)
以下操作需在 layui.use('form', function(){...}) 回调内执行,确保 form 实例可用:
- 用
$('select#mySelect').attr('lay-search', 'false')显式关闭属性(注意是字符串'false',不是布尔值) - 立即调用
form.render('select'),让 layui 重新解析该 select 的配置 - 手动清理残留 DOM:
$('select#mySelect').siblings('.layui-form-select').find('.layui-input').remove()
漏掉第三步,2.8.x 会在下拉面板顶部留下一个空输入框;漏掉前两步,DOM 清了但下次 form.render() 会根据原始 HTML 属性重建它。
远程搜索场景下更要关掉本地补全
如果你用 select.render() 配了 request 做远程加载,lay-search="true" 会导致双重过滤:先在已有选项里筛一遍,再发请求——输“杭州”可能根本搜不到后端刚返回的“杭州市西湖区”。
- 务必显式设
lay-search="false",别依赖默认值 - 如果用了自定义模板(
templet),lay-search本就失效,关不关都一样,但留着会误导后续维护 - 移动端慎用:某些安卓 WebView 下,
lay-search输入框会触发软键盘后失焦,导致下拉收起,用户根本点不到选项
真正麻烦的不是怎么关,而是关完要不要留输入框样式——如果只是想隐藏搜索行为但保留输入框视觉,得靠 CSS 控制 .layui-input 的 display,而不是开 lay-search 再 hack。











