bootstrap-select
1.13.18
依赖:jQuery 3.7.1 + Bootstrap 3.4.1,两个都是硬依赖,缺一个这块就点不开。Bootstrap 提供两样东西:
版本探测($.fn.dropdown.Constructor,缺了直接抛异常)与
dropdown 的开合状态机(给按钮增删 open 类——bootstrap-select 的触发器按这个类决定
下一次是开还是关,缺了它面板一旦打开就永远关不掉)。
- 多选形态
- 勾选面板:
<select multiple>+selectpicker({multiple:true}),面板里是li > a[role=option],.inner带aria-multiselectable=true;勾完不自动收面板 - 已选展示
- 触发器一行纯文本,逗号连接(实测
总铬, 铅)。没有 chip、没有 ×;不传title时按钮 title 会落成英文「Nothing selected」;可用selectedItemsFormat:'count'换成「已选 2 项」 - 取消一项
- 回面板把已勾的那一行再点一次(实测 2→1)。触发器上无处可点,面板里也没有「全选 / 取消全选」按钮;全清只能调
selectpicker('deselectAll') - 筛选 × 多选
- 本轮最大的坑:已选项会被筛选带走。选中「总铬/铅」后把搜索词敲成「氨」,面板里只剩命中的行(实测 32→1),这两项从面板消失(触发器文本不变),用户很容易以为没选中、重复去勾别的东西
- 藏法
position:absolute; width:.5px; opacity:0(bs-select-hidden只在 init 期间存在,结束即摘)- 挂载
- portal 到
body(options.container) - 翻转
- 无。想朝上得自己给容器加
.dropup;面板空间不足时直接被视口吃掉 - required
- CSS 写好了却默认不生效:
.was-validated select:invalid + .dropdown-toggle要求 form 自身带.was-validated,而它从不加这个类。实测空值提交后按钮只多个.bs-invalid类,边框没红
已选 0 项:(空)
尚未提交