bootstrap-select插件实现下拉框搜索功能

╰半夏微凉° 2022-05-12 11:06 678阅读 0赞

工作上要用到在下拉框内实现搜索功能,原生的select标签是不能输入的,所以最终找到了bootstrap-select插件,功能十分强大,支持搜索,多选,分组选中等。

本文摘取自:

JS组件系列——再推荐一款好用的bootstrap-select组件,亲测还不错

bootstrap框架下下拉框select搜索功能

官方文档

bootstrap-select开源地址:https://github.com/silviomoreto/bootstrap-select

bootstrap-select使用示例:http://silviomoreto.github.io/bootstrap-select/examples/

bootstrap-select文档说明:http://silviomoreto.github.io/bootstrap-select/options/

简单示例

下面先附上我的代码,实现了搜索功能,可以直接复制下来查看效果。

  1. <html>
  2. <head>
  3. <script type="text/javascript" src="http://www.daimajiayuan.com/download/jquery/jquery-1.10.2.min.js"></script>
  4. <script type="text/javascript"
  5. src="http://cdn.bootcss.com/bootstrap-select/2.0.0-beta1/js/bootstrap-select.js"></script>
  6. <link rel="stylesheet" type="text/css"
  7. href="http://cdn.bootcss.com/bootstrap-select/2.0.0-beta1/css/bootstrap-select.css">
  8. <link href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
  9. <script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
  10. <script type="text/javascript">
  11. $(window).on('load', function () {
  12. $('.selectpicker').selectpicker({
  13. 'selectedText': 'cat'
  14. });
  15. });
  16. </script>
  17. </head>
  18. <body>
  19. <div class="container">
  20. <form class="form-horizontal" role="form">
  21. <div class="form-group">
  22. <label for="bs3Select" class="col-lg-2 control-label">Test bootstrap 3 form</label>
  23. <div class="col-lg-10">
  24. <select id="bs3Select" class="selectpicker show-tick form-control" multiple data-live-search="true">
  25. <option>cow</option>
  26. <option>bull</option>
  27. <option class="get-class" disabled>ox</option>
  28. <optgroup label="test" data-subtext="another test" data-icon="icon-ok">
  29. <option>ASD</option>
  30. <option selected>Bla</option>
  31. <option>Ble</option>
  32. </optgroup>
  33. </select>
  34. </div>
  35. </div>
  36. </form>
  37. </div>
  38. </body>
  39. </html>

附上上面js、css文件的地址:官方地址

使用方式

1.定义class属性selectpicker,就可以自动初始化

  1. <select class="selectpicker">
  2. <option value="1">广东省</option>
  3. <option value="2">广西省</option>
  4. <option value="3">福建省</option>
  5. <option value="4">湖南省</option>
  6. <option value="5">山东省</option>
  7. </select>

2.多选

  1. <select class="selectpicker" multiple>
  2. <option value="1">广东省</option>
  3. <option value="2">广西省</option>
  4. <option value="3">福建省</option>
  5. <option value="4">湖南省</option>
  6. <option value="5">山东省</option>
  7. </select>

3.给组件加搜索功能

  1. <select class="selectpicker" multiple data-live-search="true">
  2. <option value="1">广东省</option>
  3. <option value="2">广西省</option>
  4. <option value="3">福建省</option>
  5. <option value="4">湖南省</option>
  6. <option value="5">山东省</option>
  7. </select>

4.选项分组

  1. <select class="form-control selectpicker" data-live-search="true" multiple>
  2. <optgroup label="广东省">
  3. <option value="1">广州市</option>
  4. <option value="2">深圳市</option>
  5. <option value="3">珠海市</option>
  6. </optgroup>
  7. <optgroup label="广西">
  8. <option value="1">南宁市</option>
  9. <option value="2">柳州</option>
  10. <option value="3">桂林市</option>
  11. </optgroup>
  12. <optgroup label="山东">
  13. <option value="1">烟台</option>
  14. <option value="2">青岛</option>
  15. <option value="3">济南</option>
  16. </optgroup>
  17. </select>

5.设置最多选中项为2个

  1. <select class="selectpicker" multiple data-live-search="true" data-max-options="2">
  2. <option value="1">广东省</option>
  3. <option value="2">广西省</option>
  4. <option value="3">福建省</option>
  5. <option value="4">湖南省</option>
  6. <option value="5">山东省</option>
  7. </select>

6.缩略模式,比如当选中值大于3个的时候只显示选中项的个数,注意这个属性只对多选生效

  1. <select class="selectpicker" multiple data-live-search="true" data-selected-text-format="count > 3">
  2. <option value="1">广东省</option>
  3. <option value="2">广西省</option>
  4. <option value="3">福建省</option>
  5. <option value="4">湖南省</option>
  6. <option value="5">山东省</option>
  7. </select>

7.显示带颜色的标签

  1. <select class="form-control selectpicker" title="请选择省份" multiple>
  2. <option data-content="<span class='label label-success'>广东省</span>">广东省</option>
  3. <option data-content="<span class='label label-info'>广西省</span>">广西省</option>
  4. <option data-content="<span class='label label-warning'>福建省</span>">福建省</option>
  5. <option data-content="<span class='label label-danger'>山东省</span>">山东省</option>
  6. </select>

8.默认样式选择

  1. <select class="selectpicker" data-style="btn-primary">
  2. ...
  3. </select>
  4. <select class="selectpicker" data-style="btn-info">
  5. ...
  6. </select>
  7. <select class="selectpicker" data-style="btn-success">
  8. ...
  9. </select>
  10. <select class="selectpicker" data-style="btn-warning">
  11. ...
  12. </select>
  13. <select class="selectpicker" data-style="btn-danger">
  14. ...
  15. </select>

70

9.关于动态赋值。

bootstrap-select是默认只加载静态数据的,如果你想加载到通过Ajax等方式动态添加的数据,就在生成option后调用方法refresh来实现更新。

  1. $('.selectpicker').selectpicker('refresh');

10.赋值取值

组件取值

  1. var value = $('#sel').val();

如果是多选,这里得到的value变量是一个数组变量,形如 [‘1’,’2’,’3’]。

组件赋值

  1. $('.selectpicker').selectpicker('val', '1');

在一些级联选择的使用场景中,经常需要在赋值的时候顺便触发一下组件的change事件,我们可以这么做。

  1. $('.selectpicker').selectpicker('val', '1').trigger("change");

如果是多选的赋值,也是一样

  1. $('.selectpicker').selectpicker('val', ['1','2','3']).trigger("change");

11.组件其他用法

全选

  1. $('.selectpicker').selectpicker('selectAll');

反选

  1. $('.selectpicker').selectpicker('deselectAll');

适应手机模式

  1. $('.selectpicker').selectpicker('mobile');

组件禁用

  1. $('.disable-example').prop('disabled', true);
  2. $('.disable-example').selectpicker('refresh');

组件启用

  1. $('.disable-example').prop('disabled', false);
  2. $('.disable-example').selectpicker('refresh');

组件销毁

  1. $('.selectpicker').selectpicker('destroy');

12.补充说明

使用bootstrap-select必须引入下面四个文件

70 1

如果你的项目里同时使用了H-ui,恭喜你,你要被坑了,因为这四个文件和h-ui.min.js和h-ui.min.css冲突,所以你可能遇到点击下拉框不弹窗的情况。建议用合理的顺序引入这几个文件,避免冲突。

发表评论

表情:
评论列表 (有 0 条评论,678人围观)

还没有评论,来说两句吧...

相关阅读