DataTables example - HTML5 data-* attributes

DataTables can use different data for different actions (display, ordering and searcgubg) which can be immensely powerful for transforming data in the display to be intuitive for the end user, while using different, or more complex data, for other actions. For example, if a table contains a formatted telephone number in the format xxx-xxxx, intuitively a user might search for the number but without a dash. Using orthogonal data for searching allows both forms of the telephone number to be used, while only the nicely formatted number is displayed in the table.

One method in which DataTables can obtain this orthogonal data for its different actions is through custom HTML5 data attributes. DataTables will automatically detect four different attributes on the HTML elements:

  • data-sort or data-order - for ordering data
  • data-filter or data-search - for search data

This example shows the use of data-sort and data-filter attributes. In this case the first column has been formatted so the first name has abbreviated, but the full name is still searchable (search for "Bruno" for example). Additionally, although the last column contains non-numeric data in it (/m) the column will correctly order numerically as the data-sort / data-order attribute is set on the column with plain numeric data.

Name Position Office Age Start date Salary
Name Position Office Age Start date Salary
T. Nixon System Architect Edinburgh 61 Mon 25th Apr 11 $3,120/m
G. Winters Director Edinburgh 63 Mon 25th Jul 11 $5,300/m
A. Cox Technical Author San Francisco 66 Mon 12th Jan 09 $4,800/m
C. Kelly Javascript Developer Edinburgh 22 Thu 29th Mar 12 $3,600/m
J. Elliott Financial Controller Edinburgh 33 Fri 28th Nov 08 $5,300/m
B. Williamson Integration Specialist New York 61 Sun 2nd Dec 12 $4,525/m
H. Chandler Sales Assistant San Francisco 59 Mon 6th Aug 12 $4,080/m
R. Davidson Integration Specialist Edinburgh 55 Thu 14th Oct 10 $6,730/m
C. Hurst Javascript Developer San Francisco 39 Tue 15th Sep 09 $5,000/m
S. Frost Software Engineer Edinburgh 23 Sat 13th Dec 08 $3,600/m
J. Gaines System Architect London 30 Fri 19th Dec 08 $5,000/m
Q. Flynn Financial Controller Edinburgh 22 Sun 3rd Mar 13 $4,200/m
C. Marshall Regional Director San Francisco 36 Thu 16th Oct 08 $5,300/m
H. Kennedy Senior Marketing Designer London 43 Tue 18th Dec 12 $4,800/m
T. Fitzpatrick Regional Director London 19 Wed 17th Mar 10 $2,875/m
M. Silva Senior Marketing Designer London 66 Tue 27th Nov 12 $3,750/m
P. Byrd Javascript Developer New York 64 Wed 9th Jun 10 $5,000/m
G. Little Systems Administrator New York 59 Fri 10th Apr 09 $3,120/m
B. Greer Software Engineer London 41 Sat 13th Oct 12 $3,120/m
D. Rios System Architect Edinburgh 35 Wed 26th Sep 12 $4,200/m
J. Caldwell Financial Controller New York 30 Sat 3rd Sep 11 $4,965/m
Y. Berry System Architect New York 40 Thu 25th Jun 09 $3,600/m
C. Vance Technical Author New York 21 Mon 12th Dec 11 $4,965/m
D. Wilder Sales Assistant Edinburgh 23 Mon 20th Sep 10 $4,965/m
A. Ramos System Architect London 36 Fri 9th Oct 09 $2,875/m
G. Joyce Developer Edinburgh 42 Wed 22nd Dec 10 $4,525/m
J. Chang Regional Director London 28 Sun 14th Nov 10 $4,080/m
B. Wagner Software Engineer San Francisco 18 Tue 7th Jun 11 $3,750/m
E. Grimes Software Engineer San Francisco 48 Thu 11th Mar 10 $2,875/m
R. Chavez Director Edinburgh 20 Sun 14th Aug 11 $3,600/m
M. House Integration Specialist Edinburgh 37 Thu 2nd Jun 11 $3,750/m
S. Burks Developer London 53 Thu 22nd Oct 09 $2,875/m
P. Bartlett Technical Author London 27 Sat 7th May 11 $6,730/m
G. Cortez Technical Author San Francisco 22 Sun 26th Oct 08 $6,730/m
M. Mccray Integration Specialist Edinburgh 46 Wed 9th Mar 11 $4,080/m
U. Butler Senior Marketing Designer San Francisco 47 Wed 9th Dec 09 $3,750/m
H. Hatfield Financial Controller San Francisco 51 Tue 16th Dec 08 $4,080/m
H. Fuentes Financial Controller San Francisco 41 Fri 12th Feb 10 $4,200/m
V. Harrell System Architect San Francisco 62 Sat 14th Feb 09 $4,965/m
T. Mooney Financial Controller London 37 Thu 11th Dec 08 $4,200/m
J. Bradshaw Director New York 65 Fri 26th Sep 08 $5,000/m
M. Weiss Support Engineer Edinburgh 64 Thu 3rd Feb 11 $4,965/m
B. Nash Software Engineer London 38 Tue 3rd May 11 $4,200/m
O. Jackson Support Engineer Edinburgh 37 Wed 19th Aug 09 $3,600/m
T. Walton Developer New York 61 Sun 11th Aug 13 $3,600/m
F. Camacho Support Engineer San Francisco 47 Tue 7th Jul 09 $4,800/m
E. Baldwin Data Coordinator Edinburgh 64 Mon 9th Apr 12 $6,730/m
Z. Frank Software Engineer New York 63 Mon 4th Jan 10 $4,800/m
Z. Serrano Software Engineer San Francisco 56 Fri 1st Jun 12 $5,300/m
J. Acosta Javascript Developer Edinburgh 43 Fri 1st Feb 13 $2,875/m
C. Stevens Sales Assistant New York 46 Tue 6th Dec 11 $4,800/m
H. Butler Director London 47 Mon 21st Mar 11 $4,080/m
L. Greer Systems Administrator London 21 Fri 27th Feb 09 $3,120/m
J. Alexander Developer San Francisco 30 Wed 14th Jul 10 $5,300/m
S. Decker Regional Director Edinburgh 51 Thu 13th Nov 08 $5,300/m
M. Bruce Javascript Developer Edinburgh 29 Mon 27th Jun 11 $4,080/m
D. Snider System Architect New York 27 Tue 25th Jan 11 $3,120/m

The Javascript shown below is used to initialise the table shown in this example:

$(document).ready(function() { $('#example').dataTable(); } );

In addition to the above code, the following Javascript library files are loaded for use in this example:

The HTML shown below is the raw HTML table element, before it has been enhanced by DataTables:

This example uses a little bit of additional CSS beyond what is loaded from the library files (below), in order to correctly display the table. The additional CSS used is shown below:

The following CSS library files are loaded for use in this example to provide the styling of the table:

This table loads data by Ajax. The latest data that has been loaded is shown below. This data will update automatically as any additional data is loaded.

The script used to perform the server-side processing for this table is shown below. Please note that this is just an example script using PHP. Server-side processing scripts can be written in any language, using the protocol described in the DataTables documentation.