ajax组合框是一个功能丰富的自动完成下拉插件,它使用jQuery、ajax、PHP向文本字段添加功能强大的(分页、过滤、排序、键盘导航)自动完成控件。
1.要开始,请在文档中加载jQuery库和ajax combobox插件的文件。
- <link rel="stylesheet" href="/path/to/jquery.ajax-combobox.css" />
- <script src="/path/to/cdn/jquery.min.js"></script>
- <script src="/path/to/jquery.ajax-combobox.min.js"></script>
2.将插件附加到目标文本字段,并指定PHP的路径,该路径用于从数据库中获取数据。
- <input type="text" id="example" />
- $('#example').ajaxComboBox('data.php');
- <?php
- require_once('AjaxComboBox.php');
- use myapp\AjaxComboBox;
- $mysql = array(
- 'dsn' => 'mysql:host=localhost;dbname=test;charset=utf8;port=3360',
- 'username' => 'root',
- 'password' => ''
- );
- $sqlite = array(
- 'dsn' => 'sqlite:../../sample/sample.sqlite3',
- 'username' => '',
- 'password' => ''
- );
- new AjaxComboBox($sqlite);
3.或者从JS对象的数组中获取数据。
- var data = [
- {id:'A001',name:'Adams', post:'Sales', position:'The rank and file'},
- {id:'A002',name:'Darling', post:'Sales', position:'The rank and file'},
- {id:'A003',name:'Kingston', post:'General Affairs',position:'Chief clerk'},
- {id:'A004',name:'Darling', post:'General Affairs',position:'Section chief'},
- {id:'A005',name:'Adams', post:'Personnel', position:'The rank and file'},
- {id:'A006',name:'Kingston', post:'Sales', position:'Director'},
- {id:'A007',name:'Kingston', post:'Sales', position:'Section chief'},
- {id:'A008',name:'Darling', post:'Personnel', position:'Chief'},
- {id:'A009',name:'Adams', post:'Personnel', position:'Chief'},
- {id:'A010',name:'Adams', post:'General Affairs',position:'The rank and file'},
- {id:'A011',name:'Darling', post:'General Affairs',position:'The rank and file'},
- {id:'A012',name:'Kingston', post:'Sales', position:'The rank and file'},
- {id:'A013',name:'MacKenzie',post:'Sales', position:'Chief clerk'},
- {id:'A014',name:'Darling', post:'Sales', position:'Vice-chief'},
- {id:'A015',name:'MacKenzie',post:'General Affairs',position:'Vice-chief'},
- {id:'A016',name:'Kingston', post:'Personnel', position:'Director'},
- {id:'A017',name:'MacKenzie',post:'Personnel', position:'Section chief'},
- {id:'A018',name:'MacKenzie',post:'Sales', position:'Chief'}
- ];
3.或者从JS对象的数组中获取数据。
- var data = [
- {id:'A001',name:'Adams', post:'Sales', position:'The rank and file'},
- {id:'A002',name:'Darling', post:'Sales', position:'The rank and file'},
- {id:'A003',name:'Kingston', post:'General Affairs',position:'Chief clerk'},
- {id:'A004',name:'Darling', post:'General Affairs',position:'Section chief'},
- {id:'A005',name:'Adams', post:'Personnel', position:'The rank and file'},
- {id:'A006',name:'Kingston', post:'Sales', position:'Director'},
- {id:'A007',name:'Kingston', post:'Sales', position:'Section chief'},
- {id:'A008',name:'Darling', post:'Personnel', position:'Chief'},
- {id:'A009',name:'Adams', post:'Personnel', position:'Chief'},
- {id:'A010',name:'Adams', post:'General Affairs',position:'The rank and file'},
- {id:'A011',name:'Darling', post:'General Affairs',position:'The rank and file'},
- {id:'A012',name:'Kingston', post:'Sales', position:'The rank and file'},
- {id:'A013',name:'MacKenzie',post:'Sales', position:'Chief clerk'},
- {id:'A014',name:'Darling', post:'Sales', position:'Vice-chief'},
- {id:'A015',name:'MacKenzie',post:'General Affairs',position:'Vice-chief'},
- {id:'A016',name:'Kingston', post:'Personnel', position:'Director'},
- {id:'A017',name:'MacKenzie',post:'Personnel', position:'Section chief'},
- {id:'A018',name:'MacKenzie',post:'Sales', position:'Chief'}
- ];
- $('#example').ajaxComboBox(Data);
4.将鼠标悬停在条目上时显示额外信息。
- $('#example').ajaxComboBox(Data,{
- sub_info: true,
- sub_as: {
- id: 'Employer ID',
- post: 'Post',
- position: 'Position'
- },
- select_only: true,
- init_record: 'A009',
- primary_key: 'id',
- });
5.将插件附加到文本区域,并指定如下触发字符。非常适合#tag&@complete自动完成。
- $('#example').ajaxComboBox(Data,{
- plugin_type: 'textarea',
- tags: [
- {
- pattern: ['@', '']
- }
- ]
- });
6.所有默认选项。
- $('#example').ajaxComboBox(Data,{
- // data source
- source: source,
- // en, es, pt-br and ja
- lang: 'en',
- // 'combobox', 'simple', 'textarea'
- plugin_type: 'combobox',
- // value of primary-key for initial value
- init_record: false,
- // database settings
- db_table: 'tbl',
- field: 'name',
- and_or: 'AND',
- // search field
- search_field: 'name',
- // number of entries per page
- per_page: 10,
- // number of pagination links
- navi_num: 5,
- // primary key
- primary_key: 'id',
- // 'name DESC', ['name ASC', 'age DESC']
- order_by: 'name',
- // dropdown icon
- 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>',
- // event to fire after selection
- bind_to: false,
- // enable simple navigation
- navi_simple: false,
- // Sub-info
- sub_info: false,
- sub_as: {},
- show_field: '',
- hide_field: '',
- // Select-only mode
- select_only: false,
- // enable tags
- tags: {
- pattern: null,
- space: [true, true],
- db_table: 'tbl',
- field: 'name',
- order_by: 'name',
- search_field: 'name',
- sub_info: false,
- sub_as: {},
- show_field: '',
- hide_field: '',
- },
- // Shorten URL service
- shorten_btn: false,
- shorten_src: 'dist/bitly.php',
- shorten_min: 20,
- shorten_reg: false
- });