multiple属性是原生html实现多选下拉框的唯一标准方式;用户需在windows按ctrl、mac按command键点击选项,或shift连续选择,但移动端常降级为单选,且js须用selectedoptions获取值而非value。

multiple 属性开启后用户怎么选中多个选项
加了 multiple 的 <select></select> 不再是单击即提交,必须配合键盘或鼠标多选操作才能真正选中多个值。Windows/Linux 下按住 Ctrl 点击可逐个切换选项;Mac 下用 Command 键;连续选中则按住 Shift 点击首尾项。
注意:移动端(iOS/Android)的原生 <select multiple></select> 行为不一致——多数浏览器会降级为单选弹窗,甚至忽略 multiple。真要支持移动多选,得换自定义组件。
JavaScript 读取 multiple select 的选中值
select 元素本身没有 .value 属性能直接返回数组,必须遍历 options 或用 selectedOptions 集合:
const sel = document.querySelector('select[multiple]');
const values = Array.from(sel.selectedOptions).map(opt => opt.value);
常见错误是写成 sel.value —— 这只返回第一个选中项(或空字符串),和是否 multiple 无关。
-
sel.options包含全部<option></option>,需手动判断opt.selected -
sel.selectedOptions是实时 HTMLCollection,更简洁,但 IE11 不支持(需 polyfill 或回退) - 提交表单时,同名
select[multiple]会以name=value1&name=value2形式编码,后端需接收数组(如 PHP 的$_POST['name'][])
样式控制与浏览器兼容性陷阱
默认 <select multiple></select> 渲染为带滚动条的固定行高列表(通常显示 4 行),高度由 size 属性控制,不是 CSS height:
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
<select multiple size="6"></select>
size 值设为 1 时,部分浏览器(如 Chrome)仍显示多选行为但视觉像单选,造成误导;设为 0 或省略则回退到默认大小(通常是 4)。CSS 能改文字、边框、背景,但无法可靠调整下拉箭头或滚动条样式(WebKit 可用 ::-webkit-scrollbar,Firefox 不支持)。
关键限制:<optgroup></optgroup> 在 multiple 模式下无法禁用或分组折叠,所有选项平铺显示。
替代方案:为什么项目里常放弃原生 multiple select
原生控件在可访问性(a11y)上其实不错(支持键盘 Space 切换、Arrow 导航),但交互体验差、样式不可控、移动端失效——所以实际项目中,90% 的「多选下拉」都是用 JS 库(如 Select2、Choices.js)或自研下拉面板实现。
它们本质是:一个文本输入框 + 按钮触发浮层 + 多选 checkbox 列表 + 动态过滤逻辑。好处是统一跨端、支持搜索、可渲染图标/标签、能绑定远程数据。代价是增加 bundle 体积、需手动处理焦点管理和屏幕阅读器属性(aria-*)。
如果只是后台管理页且只跑桌面 Chrome,原生 multiple 完全够用;一旦涉及用户端产品、合规要求或设计走查,就得准备替换方案。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










