Chosen

Use the Chosen library with Editor for complex select input options.

Chosen is a jQuery plug-in that makes long, unwieldy select boxes much more user-friendly.

Note that Chosen displays its drop down select element inside the Editor display controller. This can have the visual effect of having access to the select control potentially limited. The Select2 and Selectize libraries do not have this issue.

Please note that this plug-in was published, Editor now has a built-in autocomplete and tags field type which can be used with full integration for the published server-side libraries. It is recommended that you use the new built-in field types in preference to this plug-in, particularly for new projects.

Use

This plug-in can be obtained and used in multiple different ways.

Browser

This plug-in is available on the DataTables CDN:

JS

The plug-in will then automatically register itself against a global DataTables instance. This file can also be used if you are using an AMD loader such as Require.js.

Note that if you are using multiple plug-ins, it can be beneficial in terms of performance to combine the plug-ins into a single file and host it on your own server, rather than making multiple requests to the DataTables CDN.

NPM

The plug-ins are all available on NPM (which can also be used with Yarn or any other Javascript package manager) as part of the datatables.net-plugins package. To use this plug-in, first install the plug-ins package:

npm install datatables.net-plugins

Then import datatables.net, any other DataTables extensions you need, plus the plug-in:

import DataTable from 'datatables.net';
import 'datatables.net-plugins/editorFields/editor.chosen.mjs';

Examples

// Create an Editor instance with a Chosen field and data
new $.fn.dataTable.Editor( {
 "ajax": "php/todo.php",
 "table": "#example",
 "fields": [ {
         "label": "Item:",
         "name": "item"
     }, {
         "label": "Priority:",
         "name": "priority",
         "type": "chosen",
         "options": [
             { "label": "1 (highest)", "value": "1" },
             { "label": "2",           "value": "2" },
             { "label": "3",           "value": "3" },
             { "label": "4",           "value": "4" },
             { "label": "5 (lowest)",  "value": "5" }
         ]
     }, {
         "label": "Status:",
         "name": "status",
         "type": "radio",
         "default": "Done",
         "options": [
             { "label": "To do", "value": "To do" },
             { "label": "Done", "value": "Done" }
         ]
     }
 ]
} );
// Add a Chosen field to Editor with Chosen options set
editor.add( {
   "label": "State:",
   "name": "state",
   "type": "chosen",
   "opts": {
       "disable_search": true,
       "inherit_select_classes": true
   }
} );

Version control

If you have any ideas for how this plug-in can be improved, or spot anything that is in error, it is available on GitHub and pull requests are very welcome!