layui checkbox怎么获取所有被选中的多选框的值

酷敏小哥_9370

酷敏小哥_9370

2026-11-12

442人浏览

原创

应使用form.on('checkbox(filter)', callback)监听单个checkbox变化,data.elem.checked为新状态,data.value为其值;获取所有选中值需调用form.val('filter')或原生querySelectorAll遍历。

layui checkbox怎么获取所有被选中的多选框的值

layui checkbox 怎么用 form.on('checkbox') 监听单个变化

这个事件只触发当前被点击的 checkbox,elem.checked 是它的新状态,elem.value 是它的值。它不负责收集“所有已选中项”,只是告诉你“这个框刚被点了一下”。如果你只关心实时响应某个 checkbox 的开关动作,用这个没问题;但想一次性拿到全部选中值,不能只靠它。

常见错误是写一堆 form.on('checkbox', function() { ... }) 然后在里面试图拼数组——结果要么漏掉初始已勾选的项,要么重复添加/删除。

获取所有已选中 checkbox 值的正确方式:用 form.val() 或原生 DOM 查询

form.val() 是最稳妥的方案,前提是你的 checkbox 都在同一个 form 容器里,且都设置了 name 属性(比如 name="interests")。Layui 会自动把同名 checkbox 的选中值聚合成数组。

示例:

form.val('myForm', { // 'myForm' 是 form 元素的 lay-filter 值
  // 这里是设值,不是取值
});

取值就直接:

var data = form.val('myForm'); // 返回对象,如 { interests: ['reading', 'sports'] }
var selectedValues = data.interests || [];

如果没用 form 包裹,或想绕过 Layui 表单校验逻辑,也可以用原生方式:

var checkedElems = document.querySelectorAll('input[name="interests"]:checked');
var selectedValues = Array.from(checkedElems).map(el => el.value);

注意:document.querySelectorAll 返回的是 NodeList,要转成数组才能用 map。

为什么 $('input:checked').val() 只返回第一个值

jQuery 的 .val() 对多个元素调用时,只取第一个匹配元素的值,这是 jQuery 的设计行为,不是 bug。你看到的永远是第一个被选中的 checkbox 的 value,其余被忽略。

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

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

下载

必须显式遍历:

$('input[name="interests"]:checked').map(function() {
  return this.value;
}).get(); // 返回数组

或者更简单粗暴地避开 jQuery:

用 form.val() —— 它内部已经处理好了多值聚合,兼容 Layui 的渲染和重置逻辑,不容易出错。

初始化后 checkbox 状态没同步?检查 layui.form.render()

动态插入 checkbox、或 JS 手动修改了 checked 属性后,Layui 的样式不会自动更新,form.val() 也可能读不到最新状态。

必须手动通知 Layui 重新渲染:

  • 如果是单个 checkbox:form.render('checkbox', 'myForm');
  • 如果是整组:form.render('checkbox');

漏掉这步,form.val() 返回的还是旧数据,DOM 上看起来勾上了,但 JS 读不出来。

另外,确保 checkbox 的 name 属性一致且非空——Layui 依赖它做字段归类,没有 name 就不会被 form.val() 收集。

相关文章

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

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

下载

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

相关专题

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

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

2023.08.11

2963

5

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

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

2023.10.09

6483

6

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

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

2024.03.19

7350

13

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

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

2024.03.22

7238

10

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

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

2024.05.22

1023

5

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

2023.10.23

4811

6

HTML与HTML5的区别
HTML与HTML5的区别

HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

2024.03.06

8608

6

html5从入门到精通汇总
html5从入门到精通汇总

想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

2025.12.30

894

19

html5新老标签汇总
html5新老标签汇总

HTML5在2026年持续优化网页语义化与交互体验,不仅引入了如<header>、<nav>、<article>、<section>、<aside>、<footer>等结构化标签,还新增了<video>、<audio>、<canvas>、<figure>、<time>、<mark>等增强多媒体与

2025.12.30

734

12

热门下载

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

精品课程

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

共87课时 | 13.2万人学习

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

共89课时 | 11.5万人学习

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

共5课时 | 1.6万人学习