/DataTables-CustomSearch

An extension to the jQuery plugin DataTables allowing you to specify custom search fields

Primary LanguageJavaScriptMIT LicenseMIT

#DataTables-CustomSearch

An extension to the jQuery plugin DataTables 1.10 (http://datatables.net) allowing you to specify custom search fields.

##Quick Example

$('table').dataTable().customSearch();

##Options

###container Can be a jQuery selector string or a jQuery object. Will be where the fields are appended to. If not passed in then it will prepend it to the DataTables wrapper (effectively putting it on top of the table).

You can also specify 'thead', 'thead:before', 'thead:after', 'tfoot', 'tfoot:before' or 'tfoot:after'. This will place the fields inside the table in the matching columns.

###hideStandardSearch Whether or not to hide the DataTables search field. Defaults to true.

###fields An array of columns to give search fields. Starts at index of 0.

fields: [0,2,3,4,5,6]

If an array is passed in as fields the field will search both columns using OR.

fields: [0,[2,3],[4,6],5]

If you want to have more control then you need to pass in an object.

fields: [
  {
    field: '#myField',
    columns: 0
  },
  [2,3],
  {
    label: 'String Field',
    columns: [4,6],
    type: 'string'
  },
  {
    label: 'Number Field',
    columns: 5,
    type: 'number',
    range: ['min','max']
  },
  {
    type: 'select',
    columns: 7,
    options: [
      {
        value: 'a',
        text: 'abc'
      },
      'def'
    ]
  }
]

##Fields Options

####columns Default: []

Required

Accepts: number or array of numbers

Requirements: none

This will tie the field to the column(s) (starting with an index of 0).

####field Default: ''

Optional

Accepts: jQuery selector string or jQuery object

Requirements: none

This will tie an existing field to search the column. If supplied the label, type, and options will be ignored.

####label Default: Column Header (if a range then a concat of the column headers).

Optional

Accepts: string (plain text or html)

Requirements: none

The text in the <label> tag.

####type Default: DataTables column types (https://next.datatables.net/reference/option/columns.type)

Optional

Accepts: 'string', 'number', 'select', 'date', 'switch'

Requirements: none

This specifies the type of field to create, and affects how it is searched. A switch is good for boolean fields.

####range Default: []

Optional

Accepts: [], ['min'], ['max'], ['min', 'max']

Requirements: type is number or date

This will create a min and/or max field that the column values will have to be between.

####advanced Default: false

Optional

Accepts: boolean

Requirements: none

Puts a dropdown in from the of the field giving the user advanced searching options. It will have: contains, does not contain, is equal to, is not equal to. If the type is a number or range then it will give the options is greater than and is less than.

####caseInsensitive Default: true

Optional

Accepts: boolean

Requirements: none

Whether or not string searches should be case sensitive or not.

####trigger Default: 'change'

Optional

Accepts: 'key'

Requirements: A text box field is being used

The plugin defaults to triggering jQuery.change on fields for searching. If you set this to key then it will use jQuery.keyup.

####server Default: null

Optional

Accepts: string

Requirements: dataTables serverSide is set to true

If the dataTables serverSide option is set to true this plugin will automatically send the request. All fields will be added to the request using their id in the associative array customsearch. If you want a custom key in the array for the field then specify this field.

####options Default: The distinct values in the column

Optional

Accepts: an array of strings or objects

Requirements: type == 'select'

This will specify the options available in the select field. If the array item is an object then you need to specify the value and the text of the option. If it is a string then it counts for both. An 'All' option will always be put first with a value of ''.

####autocomplete Default: false

Optional

Accepts: boolean

Requirements: type == 'string' and jQuery UI autocomplete library

This will change the text box to be a jQuery UI autocomplete field.

####slider Default: false

Optional

Acceppts: boolean

Requirements: type == 'number' OR type == 'date' and jQuery UI slider library

This will replace the two fields with a slider that has two buttons

####chosen Default: false

Optional

Accepts: boolean

Requirements: type == 'select' and Chosen JS

This will turn the drop down select box into a chosen select box

###Events

####after Default: null

Optional

Accepts: function

Requirements: none

Parameters: An array of the filtered data on the current page, An array of all the filtered data, All the data