最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
layui多选下拉框如何实现
时间:2026-09-03 08:40:47 编辑:袖梨 来源:一聚教程网
layui 2.x 的 select 组件原生不支持多选,可靠替代方案为:①用 checkbox 模拟;②使用 formSelects-v4 插件(需引入、设 multiple 和 lay-filter、调用 render 方法),注意数据格式、手动校验及取值同步。
layui 的 select 默认不支持多选,得换方案
layui 2.x 最新 select 组件本身不提供多选功能(multiple 属性被忽略),强行加 multiple 不生效,也不会渲染勾选框或展示已选项。这不是你配置错了,是组件设计如此。
真正能用的替代方案只有两个:一是用 layui 自带的 checkbox 模拟(适合选项少、结构固定);二是引入第三方增强组件,比如 layui-lu-select 或封装 layUI + select2(适合动态数据、需搜索/分页等场景)。
用 checkbox + formSelects 实现轻量多选
layui 社区广泛使用的 formSelects 是个轻量插件,不依赖 jQuery,兼容 layui 2.8+,支持远程加载、搜索、全选/反选,且样式和 layui 原生一致。
- 下载
formSelects-v4.js(注意 v4 是 layui 2.x 专用版),放到项目lib/目录下 - 在页面中按顺序引入:
layui.css→layui.js→formSelects-v4.js -
select标签必须有lay-filter,且添加multiple属性(这是 formSelects 的识别标识) - 初始化时调用
formSelects.render('filterName'),不是form.render()
示例 HTML:
<select multiple lay-filter="city" id="city"><option value="bj">北京</option><option value="sh">上海</option><option value="gz">广州</option></select>
JS 初始化:
formSelects.render('city');
动态加载数据时,data 格式必须为数组对象
formSelects 的远程加载(url 参数)返回的数据必须是形如 [{name: '上海', value: 'sh'}, ...] 的数组,不能是 {data: [...]} 这类嵌套结构——否则选项不显示,控制台也无报错,容易卡住排查。
- 后端返回前请用
formSelects.dataFilter预处理,比如:dataFilter: function(data){ return data.list || []; } - 若用
lay-data写死静态数据,格式同上,别写成字符串数组['sh','bj'] - 选中值默认以逗号拼接字符串返回(
form.on('select(filter)', ...)中的value),如需数组,用formSelects.value('filterName', 'val')主动取
和 layui 表单验证一起用,要手动触发校验
formSelects 选中后不会自动触发 form.verify,也不会写入 form.val() 的表单数据里——它维护的是独立状态。如果用了 required 或自定义验证规则,必须额外监听变化并手动校验。
- 监听方式:
formSelects.on('city', function(id, vals, elem){ ... }),其中vals是当前选中的 value 数组 - 触发验证:
form.validate('formFilter')或调用form.verify中对应规则函数 - 提交前建议统一用
formSelects.value('city')取值,再塞进form.val()对象里,避免遗漏
这个衔接点最容易漏,表单看着提交了,后端却收不到多选字段。
相关文章
- sql2005 数据库转为sql2000数据库的做法(数据导出导入)实用指南 09-03
- SQL Server 数据库安全管理介绍实用指南 09-03
- sql server2005实现方式数据库读写分离介绍实用指南 09-03
- TPLink TLWR960N 无线路由器设置WDS桥接教程 09-03
- 如何使用Kimi进行多维度个人绩效复盘 09-03
- 腾讯文档进度条如何设置 09-03