# mulselect
**Repository Path**: csxlin/mulselect
## Basic Information
- **Project Name**: mulselect
- **Description**: 轻量版的下拉多选,原生支持
- **Primary Language**: JavaScript
- **License**: AFL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-05-25
- **Last Updated**: 2026-05-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: JavaScript, multi-select, dropdown, select, Frontend
## README
# mulselect
#### 介绍
**mulselect** 是一个**轻量级下拉多选组件**,基于原生 JavaScript 实现,**无任何第三方依赖**,适合快速集成到各类 Web 项目中。
✅ 原生 JS
✅ 体积小
✅ 使用简单
✅ 兼容性好
#### 软件架构
mulselect/
├── index.js # 核心逻辑
├── style.css # 默认样式
└── README.md # 项目说明
- 基于原生 DOM API
- 不依赖 jQuery / Vue / React
- 支持同时实例化多个选择器
#### 安装与使用
##### 1️⃣ 引入资源
通过 `script` 标签引入:
##### 2️⃣ 基础使用
const personSelect = new MultiSelect(
'personInput',
['111', '222', '333']
);
##### 3️⃣ 带配置项的使用
const citySelect = new MultiSelect(
'cInput',
['北京', '上海', '广州'],
{
placeholder: '请选择城市',
width: '200px'
}
);
#### API 说明
| 方法 | 说明 | 示例 |
|----|----|----|
| `setSelectedValues(arr)` | 设置选中值 | `personSelect.setSelectedValues(['111', '222'])` |
| `getSelectedValues()` | 获取选中值 | `personSelect.getSelectedValues()` |
| `getSelectedText()` | 获取选中文本 | `personSelect.getSelectedText()` |
| `selectAll()` | 全选 | `citySelect.selectAll()` |
| `clearAll()` | 清空选择 | `citySelect.clearAll()` |
| `reloadData(arr)` | 重新加载数据 | `personSelect.reloadData(['新数据1', '新数据2'])` |
| `destroy()` | 销毁实例 | `personSelect.destroy()` |
#### 完整示例
基本使用示例
const personSelect = new MultiSelect('personInput', [
'111',
'222',
'333'
]);
带配置的示例
const citySelect = new MultiSelect('cInput', [
'111',
'222'
], {
placeholder: '请选择...',
width: '200px'
});
设置选中值
personSelect.setSelectedValues(['111', '222']);
获取选中结果
console.log('选中的值:', personSelect.getSelectedValues());
console.log('选中的文本:', personSelect.getSelectedText());
全选 / 取消全选
citySelect.selectAll();
citySelect.clearAll();
重新加载数据
personSelect.reloadData(['新数据1', '新数据2']);
销毁插件
personSelect.destroy();
#### 配置项说明
| 参数 | 类型 | 默认值 | 说明 |
|----|----|----|----|
| `placeholder` | String | `请选择` | 输入框占位提示 |
| `width` | String | `100%` | 组件宽度 |
| `maxHeight` | String | `200px` | 下拉面板最大高度 |
#### 参与贡献
1. Fork 本仓库
2. 新建 `Feat_xxx` 分支
bash
git checkout -b Feat_xxx
3. 提交代码
bash
git commit -m "feat: add xxx feature"
4. 新建 Pull Request
#### TODO(后续计划)
- [ ] 支持搜索过滤
- [ ] 支持禁用选项
- [ ] 支持多选数量限制
- [ ] 支持表单校验
- [ ] TypeScript 类型声明
#### 特技 & 相关资源
- 使用 `Readme_en.md`、`Readme_zh.md` 支持多语言文档
- Gitee 官方博客:[blog.gitee.com](https://blog.gitee.com)
- Gitee 开源探索:[gitee.com/explore](https://gitee.com/explore)
- GVP 项目介绍:[gitee.com/gvp](https://gitee.com/gvp)
- Gitee 使用手册:[gitee.com/help](https://gitee.com/help)
- Gitee 封面人物:[gitee.com/gitee-stars](https://gitee.com/gitee-stars)