Layui表单select下拉框怎么实现多选且带一键清空功能

冬磊姑娘_6625

冬磊姑娘_6625

2026-06-08

587人浏览

原创

layui原生select不支持多选,必须使用第三方组件formSelects-v4;需引入JS/CSS,调用formSelects.render()初始化,设置type:'checkbox'和btnClear:true启用多选与清空按钮。

layui select 多选功能本身不支持,得换组件

原生 layui.select 不提供多选能力,官方文档和源码里都明确只支持单选。强行用 multiple 属性或 js 模拟勾选,会导致下拉面板关闭异常、值无法同步、回显错乱等问题。

真正可用的路径只有一条:改用 layui.formSelects —— 这是社区广泛采用的第三方扩展组件,与 layui 2.x 兼容良好,API 设计也贴近原生风格。

  • 必须引入 formSelects-v4.js(注意不是 v5,v5 已转向 Vue/React,不兼容 layui)
  • 对应 CSS 也要加载,否则下拉框样式错位或无图标
  • 初始化时不能用 form.render('select'),而要调用 formSelects.render()

formSelects 渲染多选并启用清空按钮

清空按钮(×)是 formSelects 的内置功能,但默认不显示,需显式开启 searchClear 或 btnClear 参数。

推荐写法:

深蓝色网站后台管理系统layui框架模板-AdminPro
深蓝色网站后台管理系统layui框架模板-AdminPro

一款深蓝色网站后台管理系统layui框架模板

下载
formSelects.render('mySelect', {
    type: 'checkbox',
    search: true,
    btnClear: true,  // 关键:显示右上角清空按钮
    searchPlaceholder: '搜索选项...',
    data: [
        {name: 'Java', value: 'java'},
        {name: 'Python', value: 'python'},
        {name: 'Go', value: 'go'}
    ]
});
  • type: 'checkbox' 是多选前提,'radio' 或省略则为单选
  • btnClear: true 控制右上角 × 按钮;searchClear: true 则控制搜索框内的清空 X(二者可共存)
  • 若后端返回的是字符串数组如 ["java","python"],直接传给 value 即可,无需手动拼接

获取/设置多选值要注意数据格式

formSelects.value() 返回的是数组,不是逗号字符串,这点和原生 select 的 value 行为完全不同。

  • 取值:formSelects.value('mySelect') → 返回 ['java', 'python']
  • 赋值:formSelects.value('mySelect', ['go']) → 会自动勾选对应项并刷新 UI
  • 清空:formSelects.value('mySelect', []),比点 × 按钮更可控,适合表单重置逻辑
  • 若用 $('select[name="mySelect"]').val() 取值,得到的是 undefined 或第一个值 —— 因为真实 <select></select> 被隐藏了,操作 DOM 无效

常见报错:formSelects is not defined 或下拉空白

这类问题基本锁定在加载顺序和依赖缺失上:

  • 没引入 formSelects-v4.js,只用了 layui 自带的 layui.js → 报 formSelects is not defined
  • CSS 没加载或路径错误 → 下拉框显示为纯文字列表,无复选框、无滚动条、无搜索框
  • render 时传入的 id 或 name 和 HTML 中不一致 → 渲染失败且静默,控制台无报错
  • 在 layui.use(['form'], ...) 回调外调用 formSelects.render → 依赖未就绪,可能报错或无效

复杂点在于:formSelects 的数据远程加载、树形级联、权限过滤等高级用法,都需要额外配置 url 和 formatItem,但基础多选+清空,上面几步已足够。别在没验证基础渲染成功前,急着加异步逻辑。

相关文章

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

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

下载

相关标签:

layui layui下拉框

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

相关专题

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

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

2023.08.11

2503

5

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

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

2023.10.09

5383

6

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

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

2024.03.19

6430

13

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

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

2024.03.22

6018

10

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

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

2024.05.22

863

5

ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

2840

4

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

360

5

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.15

2653

5

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.09.24

1161

6

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.9万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 11.1万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习