功能丰富 自动完成下拉插件 jQuery ajax组合框

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

简介

ajax组合框是一个功能丰富的自动完成下拉插件,它使用jQuery、ajax、PHP向文本字段添加功能强大的(分页、过滤、排序、键盘导航)自动完成控件。

更多功能:

  • 从数据库或JS对象中获取数据。
  • 文本区域中的自定义触发字符(如@、#等)。
  • 多种语言。
  • URL缩短。

如何使用它:

1.要开始,请在文档中加载jQuery库和ajax combobox插件的文件。

  1. <link rel="stylesheet" href="/path/to/jquery.ajax-combobox.css" />
  2. <script src="/path/to/cdn/jquery.min.js"></script>
  3. <script src="/path/to/jquery.ajax-combobox.min.js"></script>

2.将插件附加到目标文本字段,并指定PHP的路径,该路径用于从数据库中获取数据。

  1. <input type="text" id="example" />
  1. $('#example').ajaxComboBox('data.php');
  1. <?php
  2. require_once('AjaxComboBox.php');
  3. use myapp\AjaxComboBox;
  4. $mysql = array(
  5. 'dsn' => 'mysql:host=localhost;dbname=test;charset=utf8;port=3360',
  6. 'username' => 'root',
  7. 'password' => ''
  8. );
  9. $sqlite = array(
  10. 'dsn' => 'sqlite:../../sample/sample.sqlite3',
  11. 'username' => '',
  12. 'password' => ''
  13. );
  14. new AjaxComboBox($sqlite);

3.或者从JS对象的数组中获取数据。

  1. var data = [
  2. {id:'A001',name:'Adams', post:'Sales', position:'The rank and file'},
  3. {id:'A002',name:'Darling', post:'Sales', position:'The rank and file'},
  4. {id:'A003',name:'Kingston', post:'General Affairs',position:'Chief clerk'},
  5. {id:'A004',name:'Darling', post:'General Affairs',position:'Section chief'},
  6. {id:'A005',name:'Adams', post:'Personnel', position:'The rank and file'},
  7. {id:'A006',name:'Kingston', post:'Sales', position:'Director'},
  8. {id:'A007',name:'Kingston', post:'Sales', position:'Section chief'},
  9. {id:'A008',name:'Darling', post:'Personnel', position:'Chief'},
  10. {id:'A009',name:'Adams', post:'Personnel', position:'Chief'},
  11. {id:'A010',name:'Adams', post:'General Affairs',position:'The rank and file'},
  12. {id:'A011',name:'Darling', post:'General Affairs',position:'The rank and file'},
  13. {id:'A012',name:'Kingston', post:'Sales', position:'The rank and file'},
  14. {id:'A013',name:'MacKenzie',post:'Sales', position:'Chief clerk'},
  15. {id:'A014',name:'Darling', post:'Sales', position:'Vice-chief'},
  16. {id:'A015',name:'MacKenzie',post:'General Affairs',position:'Vice-chief'},
  17. {id:'A016',name:'Kingston', post:'Personnel', position:'Director'},
  18. {id:'A017',name:'MacKenzie',post:'Personnel', position:'Section chief'},
  19. {id:'A018',name:'MacKenzie',post:'Sales', position:'Chief'}
  20. ];

3.或者从JS对象的数组中获取数据。

  1. var data = [
  2. {id:'A001',name:'Adams', post:'Sales', position:'The rank and file'},
  3. {id:'A002',name:'Darling', post:'Sales', position:'The rank and file'},
  4. {id:'A003',name:'Kingston', post:'General Affairs',position:'Chief clerk'},
  5. {id:'A004',name:'Darling', post:'General Affairs',position:'Section chief'},
  6. {id:'A005',name:'Adams', post:'Personnel', position:'The rank and file'},
  7. {id:'A006',name:'Kingston', post:'Sales', position:'Director'},
  8. {id:'A007',name:'Kingston', post:'Sales', position:'Section chief'},
  9. {id:'A008',name:'Darling', post:'Personnel', position:'Chief'},
  10. {id:'A009',name:'Adams', post:'Personnel', position:'Chief'},
  11. {id:'A010',name:'Adams', post:'General Affairs',position:'The rank and file'},
  12. {id:'A011',name:'Darling', post:'General Affairs',position:'The rank and file'},
  13. {id:'A012',name:'Kingston', post:'Sales', position:'The rank and file'},
  14. {id:'A013',name:'MacKenzie',post:'Sales', position:'Chief clerk'},
  15. {id:'A014',name:'Darling', post:'Sales', position:'Vice-chief'},
  16. {id:'A015',name:'MacKenzie',post:'General Affairs',position:'Vice-chief'},
  17. {id:'A016',name:'Kingston', post:'Personnel', position:'Director'},
  18. {id:'A017',name:'MacKenzie',post:'Personnel', position:'Section chief'},
  19. {id:'A018',name:'MacKenzie',post:'Sales', position:'Chief'}
  20. ];
  1. $('#example').ajaxComboBox(Data);

4.将鼠标悬停在条目上时显示额外信息。

  1. $('#example').ajaxComboBox(Data,{
  2. sub_info: true,
  3. sub_as: {
  4. id: 'Employer ID',
  5. post: 'Post',
  6. position: 'Position'
  7. },
  8. select_only: true,
  9. init_record: 'A009',
  10. primary_key: 'id',
  11. });

5.将插件附加到文本区域,并指定如下触发字符。非常适合#tag&@complete自动完成。

  1. $('#example').ajaxComboBox(Data,{
  2. plugin_type: 'textarea',
  3. tags: [
  4. {
  5. pattern: ['@', '']
  6. }
  7. ]
  8. });

6.所有默认选项。

  1. $('#example').ajaxComboBox(Data,{
  2. // data source
  3. source: source,
  4.  
  5. // en, es, pt-br and ja
  6. lang: 'en',
  7.  
  8. // 'combobox', 'simple', 'textarea'
  9. plugin_type: 'combobox',
  10.  
  11. // value of primary-key for initial value
  12. init_record: false,
  13.  
  14. // database settings
  15. db_table: 'tbl',
  16. field: 'name',
  17. and_or: 'AND',
  18.  
  19. // search field
  20. search_field: 'name',
  21.  
  22. // number of entries per page
  23. per_page: 10,
  24.  
  25. // number of pagination links
  26. navi_num: 5,
  27.  
  28. // primary key
  29. primary_key: 'id',
  30.  
  31. // 'name DESC', ['name ASC', 'age DESC']
  32. order_by: 'name',
  33.  
  34. // dropdown icon
  35. button_img: '<svg class="octicon octicon-chevron-down" viewBox="0 0 10 16" version="1.1" aria-hidden="true"><path fill-rule="evenodd" d="M5 11L0 6l1.5-1.5L5 8.25 8.5 4.5 10 6z"></path></svg>',
  36.  
  37. // event to fire after selection
  38. bind_to: false,
  39.  
  40. // enable simple navigation
  41. navi_simple: false,
  42.  
  43. // Sub-info
  44. sub_info: false,
  45. sub_as: {},
  46. show_field: '',
  47. hide_field: '',
  48.  
  49. // Select-only mode
  50. select_only: false,
  51.  
  52. // enable tags
  53. tags: {
  54. pattern: null,
  55. space: [true, true],
  56. db_table: 'tbl',
  57. field: 'name',
  58. order_by: 'name',
  59. search_field: 'name',
  60. sub_info: false,
  61. sub_as: {},
  62. show_field: '',
  63. hide_field: '',
  64. },
  65.  
  66. // Shorten URL service
  67. shorten_btn: false,
  68. shorten_src: 'dist/bitly.php',
  69. shorten_min: 20,
  70. shorten_reg: false
  71.  
  72. });

预览截图