Bootstrap程序5/4 用户友好 多选插件 BsMultiSelect

  • 源码大小:1.29MB
  • 所需积分:1积分
  • 源码编号:19JP-3772
  • 浏览次数:1033次
  • 最后更新:2023年07月21日
  • 所属栏目:表单
我要下载
加入收藏
本站默认解压密码:19jp.com 或 19jp_com

简介

这只是Bootstrap 5(和4)框架的另一个多选插件,它将多选列表转换为带有复选框的易于使用的下拉列表。

用户可以通过单击复选框从下拉列表中选择一个或多个选项。

要清除选择,只需单击x图标,就像输入的标签一样。

更多功能:

  • RTL支持。
  • 允许作为ES模块实现(不需要jQuery)。
  • 表单验证。
  • 带电过滤器。
  • 根据APACHE 2许可。

如何使用它:

1.要使用该插件,请确保安装了jQuery库和Bootstrap 5(或Bootstrap 4)框架。

  1. <!-- Bootstrap Stylesheet -->
  2. <link rel="stylesheet" href="/path/to/cdn/bootstrap.min.css" />
  3. <!-- jQuery Is Optional -->
  4. <script src="/path/to/cdn/jquery.slim.min.js"></script>
  5. <!-- Bootstrap JavaScript -->
  6. <script src="/path/to/cdn/bootstrap.bundle.min.js"></script>

2.在jQuery之后加载jQuery BsMultiSelect插件的脚本。

  1. <!-- For Bootstrap 5 -->
  2. <script src="dist/js/BsMultiSelect.min.js"></script>
  3.  
  4. <!-- For Bootstrap 4 -->
  5. <script src="dist/js/BsMultiSelect.bs4.min.js"></script>

3.只需调用函数仪表板代码BsMultiSelect在多选列表中,插件将完成其余操作。

  1. <select name="states" id="example" class="form-control" multiple="multiple" style="display: none;">
  2. <option value="AL">Alabama</option>
  3. <option value="AK">Alaska</option>
  4. <option value="AZ">Arizona</option>
  5. <option value="AR">Arkansas</option>
  6. <option selected value="CA">California</option>
  7. ...
  8. </select>
  1. $(function(){
  2.  
  3. $("select").bsMultiSelect();
  4.  
  5. });

4.您也可以在JavaScript中定义如下选项。

  1. <div class="container">
  2. ...
  3. </div>
  1. $('.container').bsMultiSelect({
  2. options : [
  3. {text:"Asia", value:"C0",hidden:false,disabled:false,selected:true},
  4. {text:"Europe",value:"C1",hidden:false,disabled:false,selected:false},
  5. {text:"Australia",value:"C2",hidden:false,disabled:false,selected:false}
  6. ],
  7. getDisabled : () => {},
  8. getIsValid : () => {},
  9. getIsInvalid : () => {}
  10. });

5.自定义插件的所有默认选项。

  1. $("select").bsMultiSelect({
  2. useCssPatch: true,
  3. containerClass: "dashboardcode-bsmultiselect",
  4. css: css,
  5. cssPatch: cssPatch,
  6. placeholder: '',
  7. staticContentGenerator: null,
  8. getLabelElement: null,
  9. pickContentGenerator: null,
  10. choiceContentGenerator: null,
  11. buildConfiguration: null,
  12. isRtl: null,
  13. setSelected: null,
  14. required: null,
  15. optionsAdapter: null,
  16. options: null,
  17. getDisabled: null,
  18. getSize: null,
  19. getValidity: null,
  20. labelElement: null,
  21. valueMissingMessage: '',
  22. getIsValueMissing: null
  23. });

6.覆盖默认样式和Bootstrap 4类以自定义插件。

  1. $("select").bsMultiSelect({
  2. cssPatch: {
  3. choices: {
  4. listStyleType: 'none'
  5. },
  6. picks: {
  7. listStyleType: 'none',
  8. display: 'flex',
  9. flexWrap: 'wrap',
  10. height: 'auto',
  11. marginBottom: '0'
  12. },
  13. choice: 'px-md-2 px-1',
  14. choice_hover: 'text-primary bg-light',
  15. filterInput: {
  16. border: '0px',
  17. height: 'auto',
  18. boxShadow: 'none',
  19. padding: '0',
  20. margin: '0',
  21. outline: 'none',
  22. backgroundColor: 'transparent',
  23. backgroundImage: 'none' // otherwise BS .was-validated set its image
  24.  
  25. },
  26. filterInput_empty: 'form-control',
  27. // need for placeholder, TODO test form-control-plaintext
  28. // used in staticContentGenerator
  29. picks_disabled: {
  30. backgroundColor: '#e9ecef'
  31. },
  32. picks_focus: {
  33. borderColor: '#80bdff',
  34. boxShadow: '0 0 0 0.2rem rgba(0, 123, 255, 0.25)'
  35. },
  36. picks_focus_valid: {
  37. borderColor: '',
  38. boxShadow: '0 0 0 0.2rem rgba(40, 167, 69, 0.25)'
  39. },
  40. picks_focus_invalid: {
  41. borderColor: '',
  42. boxShadow: '0 0 0 0.2rem rgba(220, 53, 69, 0.25)'
  43. },
  44. // used in BsAppearance
  45. picks_def: {
  46. minHeight: 'calc(2.25rem + 2px)'
  47. },
  48. picks_lg: {
  49. minHeight: 'calc(2.875rem + 2px)'
  50. },
  51. picks_sm: {
  52. minHeight: 'calc(1.8125rem + 2px)'
  53. },
  54. // used in pickContentGenerator
  55. pick: {
  56. paddingLeft: '0px',
  57. lineHeight: '1.5em'
  58. },
  59. pickButton: {
  60. fontSize: '1.5em',
  61. lineHeight: '.9em',
  62. float: "none"
  63. },
  64. pickContent_disabled: {
  65. opacity: '.65'
  66. },
  67. // used in choiceContentGenerator
  68. choiceContent: {
  69. justifyContent: 'initial'
  70. },
  71. // BS problem: without this on inline form menu items justified center
  72. choiceLabel: {
  73. color: 'inherit'
  74. },
  75. // otherwise BS .was-validated set its color
  76. choiceCheckBox: {
  77. color: 'inherit'
  78. },
  79. choiceLabel_disabled: {
  80. opacity: '.65'
  81. }
  82. }
  83. });

7.您可以在没有Bootstrap 4的情况下使用自己的CSS来设计插件的样式。

  1. $("select").bsMultiSelect({
  2. useCssPatch: false,
  3. css: {
  4. choices: 'dropdown-menu',
  5. // bs4, in bsmultiselect.scss as ul.dropdown-menu
  6. choice_hover: 'hover',
  7. // not bs4, in scss as 'ul.dropdown-menu li.hover'
  8. choice_selected: '',
  9. choice_disabled: '',
  10. picks: 'form-control',
  11. // bs4, in scss 'ul.form-control'
  12. picks_focus: 'focus',
  13. // not bs4, in scss 'ul.form-control.focus'
  14. picks_disabled: 'disabled',
  15. // not bs4, in scss 'ul.form-control.disabled'
  16. pick_disabled: '',
  17. pickFilter: '',
  18. filterInput: '',
  19. // used in BsPickContentStylingCorrector
  20. pick: 'badge',
  21. // bs4
  22. pickContent: '',
  23. pickContent_disabled: 'disabled',
  24. // not bs4, in scss 'ul.form-control li span.disabled'
  25. pickButton: 'close',
  26. // bs4
  27. // used in BsChoiceContentStylingCorrector
  28. // choice: 'dropdown-item', // it seems like hover should be managed manually since there should be keyboard support
  29. choiceCheckBox_disabled: 'disabled',
  30. // not bs4, in scss as 'ul.form-control li .custom-control-input.disabled ~ .custom-control-label'
  31. choiceContent: 'custom-control custom-checkbox d-flex',
  32. // bs4 d-flex required for rtl to align items
  33. choiceCheckBox: 'custom-control-input',
  34. // bs4
  35. choiceLabel: 'custom-control-label justify-content-start',
  36. choiceLabel_disabled: ''
  37. }
  38. });

8.将其作为ES模块来实现。

  1. import Popper from "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/esm/popper.js"
  2. import {BsMultiSelect} from "./dist/js/BsMultiSelect.esm.min.js"
  3. var mySelect = document.querySelector('#select-id');
  4. var environment = {window, Popper};
  5. bsMultiSelect = BsMultiSelect(mySelect, environment, {
  6. // settings here
  7. });

9.使用以下API方法更新组件上的更改。

  1. $('select').bsMultiSelect("UpdateIsValid");
  2. $('select').bsMultiSelect("UpdateDisabled");
  3. $('select').bsMultiSelect("UpdateSize");
  4. $('select').bsMultiSelect("UpdateWasValidated");
  5. $('select').bsMultiSelect("UpdateValidy");
  6. $('select').bsMultiSelect("UpdateOptionsSelected", index);
  7. $('select').bsMultiSelect("UpdateOptionDisabled", index);
  8. $('select').bsMultiSelect("UpdateOptionHidden", index);
  9. // or all-in-one
  10. $('select').bsMultiSelect("UpdateAppearance");
  11. $('select').bsMultiSelect("UpdateData");

更新日志:

2.0.0贝塔28(2021-12-19)

  • 使现代化

2.0.0贝塔27(2021-12-08)

  • 使现代化

2.0.0贝塔26(2021-12-05)

  • 更新NPM包。

2.0.0贝塔25(2021-12-01)

  • 更新NPM包。
  • Bootstrap 4版本已更新

v1.1.18 (2021-09-06)

  • 错误修复

v1.1.17 (2021-09-02)

  • 错误修复

v1.1.16 (2021-08-25)

  • CSS更新

v1.1.15 (2021-07-04)

  • 优化

v1.1.14 (2021-07-04)

  • scrollIntoView已改进

v1.1.13 (2021-06-29)

  • 滚动选项的IntoView动态样式插件

v1.1.13 (2021-06-28)

  • 滚动选项的IntoView动态样式插件

v1.1.12 (2021-06-26)

  • 错误修复。

v1.1.11 (2021-06-25)

  • 错误修复。

v1.1.8 (2021-06-24)

  • 高亮显示插件、自定义选择样式插件、自定义选取样式插件

v1.1.7 (2021-06-20)

  • 选项动态样式插件

v1.1.6 (2021-06-17)

  • 错误修复
  • 改进了“无结果”消息。

v1.1.1 (2021-06-08)

  • IE11设置占位符问题已解决

1.1.0版(2021-06-08)

  • DOM生成中的突破性变化

1.0.4版(2021-06-05)

  • DOM生成中的突破性变化:上一个下拉列表ul被包装到div

1.0.3版(2021-06-04)

  • 解决了rtl中拾取之间的填充问题

v1.0.1/2 (2021-06-03)

  • 不支持jquery的UMD捆绑包
  • 浮动标签(Bootstrap 5版本)

1.0.0版(2021-05-27)

  • 支持Bootstrap程序5

版本0.6.27(2020-08-19)

  • 已更新

版本0.6.27(2020-08-05)

  • 恢复与旧代码的兼容性

版本0.6.25(2020-07-02)

  • 优化

版本0.6.23(2020-06-27)

  • 优化

版本0.6.22(2020-06-26)

  • 修正错误

版本0.6.21(2020-06-25)

  • 修正错误

版本0.6.20(2020-06-24)

  • 优化。

版本0.6.19(2020-06-23)

  • 优化。

版本0.6.18(2020-06-22)

  • 错误修复

版本0.6.15(2020-06-20)

  • 优化布局api

版本0.6.14(2020-06-19)

  • FilterAspect重新设计

版本0.6.13(2020-06-18)

  • 布局重新设计

版本0.6.12(2020-06-17)

  • API更改

版本0.6.11(2020-06-16)

  • 错误修复

版本0.6.10(2020-06-15)

  • 错误修复

v0.6.9 (2020-06-13)

  • 已优化

版本0.6.8(2020-06-13)

  • 优化的API

版本0.6.7(2020-06-11)

  • 错误修复

v0.6.5 (2020-06-11)

  • 优化。

版本0.6.4(2020-06-10)

  • 优化。

v0.6.3 (2020-06-09)

  • 修复了ReferenceError:未定义adjustLegacySettings

版本0.6.2(2020-06-08)

  • 更新的API

版本0.6.0(2020-06-02)

  • 更改了API名称

版本0.5.68(2020-06-01)

  • 优化

版本0.5.67(2020-05-31)

  • 优化

版本0.5.66(2020-05-30)

  • 优化

版本0.5.65(2020-05-29)

  • 修正了IE11弹性启动。

版本0.5.64(2020-05-29)

  • 优化

版本0.5.63(2020-05-21)

  • 优化

版本0.5.62(2020-05-20)

  • 优化

版本0.5.61(2020-05-19)

  • Bug已修复

版本0.5.60(2020-05-18)

  • Bug已修复

版本0.5.59(2020-05-17)

  • Bug已修复

版本0.5.58(2020-05-05)

  • 向后恢复窗体插件

版本0.5.57(2020-05-05)

  • 优化

版本0.5.56(2020-05-04)

  • 添加了占位符插件

版本0.5.55(2020-05-01)

  • 优化

版本0.5.53(2020-04-30)

  • 优化

版本0.5.52(2020-04-29)

  • 优化

版本0.5.51(2020-04-28)

  • 优化

版本0.5.50(2020-04-26)

  • BsMultiSelect esm模块可用的插件api

版本0.5.49(2020-04-25)

  • 为popover添加了预防溢出选项。

版本0.5.48(2020-04-24)

  • API已更改

版本0.5.47(2020-04-22)

  • 错误修复

版本0.5.46(2020-04-21)

  • API已更改。

版本0.5.45(2020-04-19)

  • 改善

版本0.5.44(2020-04-18)

  • alignToFilterInputItemLocation优化

版本0.5.43(2020-04-17)

  • 修正了IE11上的弹性启动。

版本0.5.42(2020-04-16)

  • 优化

版本0.5.41(2020-04-15)

  • 更改的API-UpdateOptionHidden
  • 修正错误

版本0.5.40(2020-03-18)

  • 优化。

版本0.5.39(2020-03-17)

  • 更好的用户体验。

版本0.5.38(2020-03-16)

  • Bug已修复

版本0.5.37(2020-03-15)

  • 方法已更新

版本0.5.36(2020-03-12)

  • 添加了UpdateOptionInserted方法

版本0.5.35(2020-03-11)

  • 优化

版本0.5.34(2020-03-10)

  • 优化

版本0.5.33(2020-03-09)

  • 优化

版本0.5.32(2020-03-08)

  • 添加了新方法UpdateOptionsDisabled
  • 已将UpdateSelected重命名为UpdateOptionsSelected

版本0.5.31(2020-03-07)

  • 修正错误

版本0.5.30(2020-03-06)

  • 修复了内存泄漏错误

版本0.5.29(2020-03-05)

  • 按输入中的Enter键将打开下拉列表

版本0.5.28(2020-03-04)

  • 针对过滤器进行了优化

版本0.5.27(2020-03-03)

  • 修复了完全匹配问题

版本0.5.26(2020-03-02)

  • 优化

版本0.5.25(2020-03-01)

  • 优化

版本0.5.24(2020-02-29)

  • 添加了UpdateSelected API

版本0.5.23(2020-02-28)

  • 已优化的配置

版本0.5.22(2020-02-27)

  • 优化

版本0.5.21(2020-02-26)

  • 样式更新

版本0.5.20(2020-02-25)

  • 错误修复

版本0.5.19(2020-02-24)

  • 优化

版本0.5.18(2020-02-24)

  • API更新

版本0.5.16(2020-02-22)

  • 优化

版本0.5.15(2020-02-21)

  • setSelected不会删除选定的属性

版本0.5.14(2020-02-20)

  • 新方法UpdateAppearance

版本0.5.13(2020-02-19)

  • BsMultiSelect jQuery原型可以创建实例(仅返回)

版本0.5.12(2020-02-18)

  • 错误修复

版本0.5.11(2020-02-17)

  • 添加了返回“下拉菜单”的GetChoices()方法

版本0.5.10(2020-02-12)

  • ES6模块

版本0.5.9(2020-02-12)

  • 优化

版本0.5.8(2020-02-10)

  • 优化

版本0.5.6/7(2020-02-09)

  • 优化

v0.5.5 (2020-02-08)

  • 修复了下拉列表的样式

版本0.5.4(2020-02-06)

  • 配置css/cssPatch,假设styles属性的值为null/未定义-该属性将从默认的styles字典中删除

版本0.5.3(2020-02-06)

  • 已解决内联表单的下拉菜单中的对齐

版本0.5.2(2020-02-05)

  • 故障

版本0.5.0(2020-02-04)

  • 已更新

0.4.34贝塔(2020-01-24)

  • 规范化选项
  • mem泄漏已解决
  • RTL支持

版本0.4.33(2019-12-21)

  • 更好地支持群组输入

版本0.4.32(2019-12-20)

  • getSize、getDisabled、getIsValid、getIsInValid(实际用于启动的js对象)可用于从配置进行设置

版本0.4.31(2019-12-20)

  • 更适合sm lg尺寸的填充物

版本0.4.30(2019-12-19)

  • configuration.set选择为选择前和选择后事件的挂钩

版本0.4.29(2019-12-17)

  • 支持表单控件lg/sm
  • 支持输入组lg和输入组sm(在容器上)

版本0.4.27(2019-12-17)

  • 在手机设备上更美观

版本0.4.26(2019-12-16)

  • 修复了占位符问题。

版本0.4.20(2019-12-14)

  • IE11上的占位符看起来更好

版本0.4.19(2019-12-14)

  • 增加了占位符支持

版本0.4.18(2019-12-13)

  • 在html中实例化的“no flick”dom元素;Bootstrap程序准备,追加;全选并取消选择所有方法

版本0.4.17(2019-12-11)

  • 支持字段集

版本0.4.10/11/12(2019-12-08)

  • 表单重置支持
  • 已删除控制台输出
  • 现在“GetContainer”返回容器div
  • 修复了错误

版本0.4.10/11/12(2019-12-07)

  • 取消选中选中的错误已解决
  • esc首先关闭下拉菜单,然后关闭模态

版本0.4.9(2019-12-06)

  • 小型优化和错误修复

版本0.4.6(2019-12-03)

  • 错误修复

版本0.4.5(2019-11-28)

  • ESC键现在使用preventDefault处理(以避免重复明文自定义功能)

版本0.4.4(2019-11-27)

  • 点击所选面板内部不会清除过滤器输入(我们有用于此的bootrap x和ESC按钮)

版本0.4.3(2019-11-26)

  • 修正了:“两个下拉项可以悬停一段时间”(一个是通过键盘上的鼠标秒)

版本0.4.2(2019-11-13)

  • 配置API更改;当输入全文时发生“选定”

版本0.4.1(2019-11-01)

  • 添加了“buildConfiguration”方法

版本0.4.0(2019-10-25)

  • 添加了“buildConfiguration”方法
  • 再次重新设计了标签输入的id生成(现在先使用id,如果没有id,则使用name)
  • 从现在起不带id的复选框(js事件用于引用标签和checbox,而不是“for id”功能)。

版本0.3.0(2019-10-21)

  • 配置对象现在被命名为“configuration”(以前是选项)
  • id generation-新id(顺便说一句,id generation可以自定义分配configuration.createCheckBoxId和configuration.createInputId方法)

版本0.2.24(2019-07-28)

  • 添加(硬编码)css foat:none到“取消”按钮span(x)ââ因为BS团队在最新的BS版本中添加了float:rigth(为什么?);这就是为什么有时徽章的“x”按钮会单独移动到新行的原因。

版本0.2.23(2019-07-27)

  • 在下拉列表中支持bsMultiSelect:单击以删除/取消选择项目现在在setTimout(..,0)中处理,这有助于过滤掉下拉列表的隐藏事件处理程序中的关闭点击(调查点击目标是bsMultiSelect并忽略它)

版本0.2.22(2019-04-12)

  • 更好的用户体验,当aotosugestion list-tab中只剩下一个并输入select it时

2018-10-11

  • 高度初始->自动,因为IE11不支持初始(和节点更新)

2018-07-25

  • 支架BS 4.1.3固定高度模板控制

2018-06-25

  • 修复“可以选择禁用”

2018-06-23

  • v0.2.9:错误修复

2018-06-22

  • 版本0.2.7

2018-06-20

  • 错误修复

2018-06-13

  • 已将只读重命名为禁用

2018-06-11

  • 处置标签点击返回最后一个值

2018-06-06

  • 修复选择后自动关闭
  • 修复选项错误

2018-06-05

  • 在原始选择时触发更改

2018-06-02

  • 动态禁用支持

2018-05-31

  • 在clearFilterInput中采用FilterInputLength

2018-05-24

  • 在clearFilterInput中采用FilterInputLength

2018-05-23

  • v0.1.3:通过eslint调整的代码;修复了可见菜单选择器的错误

2018-05-21

  • 版本0.1.0

预览截图