高性能单/多选插件 jQuery pqSelect

  • 源码大小:35.93KB
  • 所需积分:1积分
  • 源码编号:19JP-3604
  • 浏览次数:727次
  • 最后更新:2023年07月01日
  • 所属栏目:表单
本站默认解压密码:19jp.com 或 19jp_com

简介

pqSelect是一个jQuery插件,可用于将常规的<select>元素转换为可定制的高性能下拉选择小部件。

单击选项、复选框(多选)或单选按钮(单选)后,用户可以从下拉列表中的单个或多个选项中进行选择。

该小部件是基于jQuery UI设计的,这意味着它可以完全自定义主题,并易于与Bootstrap框架集成。

该插件最棒的部分是它支持虚拟渲染,即使用户处于低带宽或慢速连接时,该插件也能顺利渲染和运行。

更多功能:

  • 选择全部按钮。
  • 实时搜索。
  • 支持选项组。
  • 键盘可访问性。
  • 窗口关闭时自动关闭并滚动。
  • 将所选选项显示为标记/令牌。
  • 碰撞/边缘检测。
  • 允许您设置要显示的最大选项数。

如何使用它:

1.在文档中加载必要的jQuery库和jQuery UI。

  1. <!-- jQuery UI Theme -->
  2. <link rel="stylesheet" href="/path/to/cdn/jquery-ui.css">
  3.  
  4. <!-- jQuery Library -->
  5. <script src="/path/to/cdn/jquery.min.js"></script>
  6.  
  7. <!-- jQuery UI -->
  8. <script src="/path/to/cdn/jquery-ui.min.js"></script>

2.加载jQuery pqSelect插件的文件。

  1. <link rel="stylesheet" href="pqselect.min.css" />
  2. <script src="pqselect.min.js"></script>

3.调用函数pq选择在现有的select元素上,插件将处理其余部分。

  1. <select id="select-demo" multiple>
  2. <optgroup label="Brazil">
  3. <option>RJ</option>
  4. <option>SP</option>
  5. </optgroup>
  6. <optgroup label="Canada">
  7. <option>BC</option>
  8. <option>Québec</option>
  9. </optgroup>
  10. <optgroup label="Ireland">
  11. <option>Co. Cork</option>
  12. </optgroup>
  13. <optgroup label="UK">
  14. <option>Essex</option>
  15. <option>Isle of Wight</option>
  16. </optgroup>
  17. <optgroup label="USA">
  18. <option>AK</option>
  19. <option>CA</option>
  20. <option>ID</option>
  21. <option>MT</option>
  22. <option>NM</option>
  23. <option>OR</option>
  24. <option>WA</option>
  25. <option>WY</option>
  26. </optgroup>
  27. <optgroup label="Venezuela">
  28. <option>DF</option>
  29. <option>Lara</option>
  30. <option>Nueva Esparta</option>
  31. <option>Táchira</option>
  32. </optgroup>
  33. </select>
  1. $(function() {
  2. $("#select-demo").pqSelect({
  3. // options
  4. })
  5. });

4.将复选框(用于多选)或单选按钮(用于单选)添加到选项中。推荐。

  1. $(function() {
  2. $("#select-demo").pqSelect({
  3. // options
  4. })
  5. });

5.更多具有默认值的配置选项。

  1. $(function() {
  2. $("#select-demo").pqSelect({
  3. singlePlaceholder: 'Select an option',
  4. displayText: '{0} of {1} selected',
  5. maxDisplay: 4,
  6. maxHeight: 300,
  7. // max number of options allowed to select
  8. maxSelect: 0,
  9. multiplePlaceholder: 'Select options',
  10. selectallText: 'Select All',
  11. closeOnWindowScroll: true,
  12. closeOnWindowResize: true,
  13. itemCls: 'pq-select-item ui-corner-all ui-state-default',
  14. // for Bootstrap
  15. bootstrap: {
  16. on: false,
  17. btn: 'btn btn-default',
  18. popupCont: 'panel panel-default',
  19. selectCls: 'label label-info',
  20. itemCls: 'label label-default',
  21. closeIcon: 'glyphicon glyphicon-remove',
  22. searchIcon: 'glyphicon glyphicon-search',
  23. hoverCls: ''
  24. },
  25. position: {
  26. my: 'left top',
  27. at: 'left bottom',
  28. collision: 'flipfit'
  29. },
  30. kcOpen: [KC.DOWN, KC.ENTER, KC.UP],
  31. deselect: true,
  32. hoverCls: 'pq-state-hover',
  33. // jQueryUI resizable opitons
  34. optionsResizable: {
  35. handles: 'e,s'
  36. },
  37. search: true,
  38. // or 'begin'
  39. searchRule: 'contain',
  40. _selectCls: 'pq-state-select',
  41. selectCls: 'ui-state-highlight',
  42. width: null,
  43. rowHt: 25,
  44. maxSelectReach: null,
  45. maxSelectExceed: null
  46. })
  47. });

6.API方法。

  1. // close
  2. $("#select-demo").pqSelect( "close" );
  3.  
  4. // destroy
  5. $("#select-demo").pqSelect( "destroy" );
  6.  
  7. // disable
  8. $("#select-demo").pqSelect( "disable" );
  9.  
  10. // enable
  11. $("#select-demo").pqSelect( "enable" );
  12.  
  13. // get instance
  14. var select = $("#select-demo").pqSelect( "getInstance" ).select;
  15. // check if is open
  16. $("#select-demo").pqSelect( "isOpen" );
  17.  
  18. // get options
  19. var options = $("#select-demo").pqSelect( "option" );
  20.  
  21. // get values from option
  22. var disabled = $("#select-demo").pqSelect( "option", "disabled" );
  23.  
  24. // set option
  25. $("#select-demo").pqSelect( "option", "disabled", true );
  26.  
  27. // set options
  28. $("#select-demo").pqSelect( "option", {disabled: true} );
  29.  
  30. // refresh
  31. $("#select-demo").pqSelect( "refresh" );
  32.  
  33. // reload data
  34. $("#select-demo").pqSelect( "refreshData" );
  35.  
  36. // get widget
  37. var widget = $("#select-demo").pqSelect( "widget" );

7.事件。

  1. $("#select-demo").on("pqselectcreate", function(event, ui){
  2. // do something
  3. });
  4.  
  5. $("#select-demo").on("pqselectmaxselectreach", function(event, ui){
  6. // do something
  7. });
  8.  
  9. $("#select-demo").on("pqselectmaxselectexceed", function(event, ui){
  10. // do something
  11. });

预览截图