layui form select搜索功能 layui如何给下拉框增加搜索

酷瑶吖_4234

酷瑶吖_4234

2026-03-21

1091人浏览

原创

能,但需注意版本与写法:Layui 2.9.16起lay-search支持配置对象控制大小写敏感等,此前仅布尔开关;常见错误是未套layui-form或使用旧版。

layui 2.9+ 原生 lay-search 能不能直接用?

能,但得看版本和写法。layui 2.9.16 是分水岭:之前 lay-search 只是布尔开关,之后它支持传配置对象,比如大小写敏感、模糊匹配逻辑全靠它控制。

常见错误现象:加了 lay-search="" 没反应 → 很可能外层没套 layui-form;或者用了旧版 Layui(

  • 必须确保 <select></select> 在 <form class="layui-form"></form> 内,否则原生搜索不触发
  • 2.9.16+ 推荐写成 lay-search="{caseSensitive: false, fuzzy: true}",而不是仅 lay-search
  • fuzzy: true 表示支持子串匹配(如输“京”能匹配“北京市”),默认是 false(全字匹配)
  • 注意兼容性:该高级配置仅在 2.9.16+ 生效,低版本会静默降级为简单搜索

想让用户「搜不到就手动加新项」,怎么接住 blur 事件?

原生 lay-search 不提供「新增选项」能力,必须自己监听输入框失焦,再判断、追加、重渲染。

关键陷阱在于:Layui 渲染后,真实 <select></select> 被隐藏,表层是 <div class="layui-input">,所以不能直接给 <code><select></select> 绑事件,得代理到 body 或父容器。

  • 用 $('body').on('blur', '.layui-input', ...) 捕获失焦,避免动态生成的 input 绑定失效
  • 通过 $(e.currentTarget).closest('.layui-form-select').prev('select') 找到对应原始 select 元素
  • 新增前务必 .filter(function(){ return $(this).text().trim() === inputValue }) 去重,否则重复点几次就炸出一堆相同 option
  • 追加完必须调 form.render('select'),否则新选项不出现在下拉里

选项太多、要连后端查,还能用原生 lay-search 吗?

不能。原生搜索只做前端过滤,数据量一大就卡死,且无法支持关键词请求 API。

这时候得换方案:要么用 formSelects 插件(官方生态最稳),要么自己手写带防抖的 fetch + render 流程。

  • formSelects 的 data(id, 'server', { url: '/api/options', keyword: 'name' }) 会自动拼参、防抖、加载中状态管理
  • 自己实现时,input 用 oninput + setTimeout 防抖,延迟 300ms 再发请求,避免高频刷接口
  • 返回数据必须是数组,每项含 name 和 value 字段,否则 formSelects 解析失败
  • 远程搜索时,禁用原生 lay-search,否则本地过滤和远程结果会冲突

formSelects 插件里 xm-select-create 和 create 回调有什么区别?

HTML 属性 xm-select-create 是开关,JS 配置里的 create 函数才是逻辑主体 —— 它决定「用户输的新内容」最终变成什么值存进表单。

典型翻车点:只开了属性但没写回调,结果新增项 value 是空字符串或 undefined,提交时报校验失败。

  • xm-select-create 属性只是告诉插件“允许创建”,不提供任何转换逻辑
  • create: function(id, name) { return name.trim(); } 才真正把输入文本转成 value,建议加 trim() 防空格污染
  • 如果需要生成 UUID 或服务端 ID,这里应返回占位符(如 "new_"+Date.now()),等表单提交后再异步补全
  • 多选场景下,create 返回的 value 必须唯一,否则多次添加同一文本会导致覆盖而非追加
原生搜索够用就别动,但只要涉及「新增」「远程查」「分组」「权限树」,formSelects 就不是可选项,而是必选项——它的 data 加载机制和 closed 监听器,才是真正能落地的生产级方案。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2383

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5123

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6210

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5738

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

823

5

C语言变量命名
C语言变量命名

c语言变量名规则是:1、变量名以英文字母开头;2、变量名中的字母是区分大小写的;3、变量名不能是关键字;4、变量名中不能包含空格、标点符号和类型说明符。php中文网还提供c语言变量的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

3029

3

c语言入门自学零基础
c语言入门自学零基础

C语言是当代人学习及生活中的必备基础知识,应用十分广泛,本专题为大家c语言入门自学零基础的相关文章,以及相关课程,感兴趣的朋友千万不要错过了。

2023.07.25

2268

9

c语言运算符的优先级顺序
c语言运算符的优先级顺序

c语言运算符的优先级顺序是括号运算符 > 一元运算符 > 算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符。本专题为大家提供c语言运算符相关的各种文章、以及下载和课程。

2023.08.02

1200

5

c语言数据结构
c语言数据结构

数据结构是指将数据按照一定的方式组织和存储的方法。它是计算机科学中的重要概念,用来描述和解决实际问题中的数据组织和处理问题。数据结构可以分为线性结构和非线性结构。线性结构包括数组、链表、堆栈和队列等,而非线性结构包括树和图等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.09

1158

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习