lay-search="false"可关闭搜索框,但需配合form.render('select')生效,且必须置于form.layui-form内,否则属性不被识别;留空或不写等价于true,删属性无效。

lay-search 属性设为 false 就能关掉搜索框
直接在 <select></select> 标签里写 lay-search="false",不是删掉属性,也不是留空——留空或不写等价于 true。这个开关只控制搜索输入框是否渲染,不涉及数据过滤逻辑。
常见错误是以为删掉 lay-search 就行,结果发现下拉框还是带搜索框;或者写成 lay-search="",这在 2.9.16+ 版本里会被当默认开启处理。
-
lay-search="false":彻底不渲染搜索输入框,DOM 里找不到.layui-input -
lay-search或lay-search="":开启默认搜索(前缀匹配 + 不区分大小写) -
lay-search="{fuzzy: true}":仅限 2.9.16+,开启子串匹配,但仍是搜索模式
form.render('select') 必须调用,否则禁用无效
即使写了 lay-search="false",如果页面是动态插入的 <select></select>,或者你改了属性后没刷新表单,Layui 仍可能沿用旧渲染结果。原因在于:Layui 的 select 是基于原生元素生成的模拟 DOM,lay-search 只在 form.render() 时读取一次。
所以,改完属性后必须显式调用:
layui.use(['form'], function(){
var form = layui.form;
// 修改 lay-search 属性后
form.render('select');
});
注意:form.render('select') 不能在 layui.use 外调用,也不能在 DOM 尚未就绪时调用(比如 $(document).ready 之前)。
已开启搜索又想临时关闭?JS 动态移除更稳妥
运行时想切开关,别只改属性,得连带清理已生成的搜索输入框 DOM。否则 lay-search="false" 生效了,但界面上还残留一个不可用的 .layui-input。
推荐做法:
- 先用
$('select').attr('lay-search', 'false')更新属性 - 再调用
form.render('select') - 最后手动删掉残留输入框:
$('select').siblings('.layui-form-select').find('.layui-input').remove()
这三步缺一不可。只做前两步,在某些版本(如 2.8.x)里会留下空白区域;只删 DOM 不改属性,下次 form.render() 又会重建。
为什么 search: false 在 select.render() 里不管用
select.render() 的 search: false 是 Layui 3.0+ 的新 API,当前主流版本(2.8–2.9)的 select.render 不识别这个配置项。你在 select.render({ elem: '#xxx', search: false }) 里写它,Layui 会静默忽略,照样渲染搜索框。
真正生效的只有 HTML 属性 lay-search="false" + form.render('select') 这个组合。别被文档片段误导——有些示例混用了不同版本的 API。
最容易被忽略的是:哪怕你用的是 2.9.16+,只要没把 <select></select> 放在 form.layui-form 容器内,lay-search 属性根本不会被扫描到,自然也就关不掉。











