tablesorter is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. tablesorter can successfully parse and sort many types of data including linked data in a cell. ### [Documentation](http://mottie.github.io/tablesorter/docs/) * See the [full documentation](http://mottie.github.io/tablesorter/docs/). * All of the [original document pages](http://tablesorter.com/docs/) have been included. * Information from my blog post on [undocumented options](http://wowmotty.blogspot.com/2011/06/jquery-tablesorter-missing-docs.html) and lots of new demos have also been included. * Change log moved from included text file into the [wiki documentation](https://github.com/Mottie/tablesorter/wiki/Change). ### Demos * [Basic alpha-numeric sort Demo](http://mottie.github.com/tablesorter/). * Links to demo pages can be found within the main [documentation](http://mottie.github.io/tablesorter/docs/). * More demos & playgrounds - updated in the [wiki pages](https://github.com/Mottie/tablesorter/wiki). ### Features * Multi-column alphanumeric sorting. * Multi-tbody sorting - see the [options](http://mottie.github.io/tablesorter/docs/index.html#options) table on the main document page. * Parsers for sorting text, alphanumeric text, URIs, integers, currency, floats, IP addresses, dates (ISO, long and short formats) & time. [Add your own easily](http://mottie.github.io/tablesorter/docs/example-parsers.html). * Inline editing - see [demo](http://mottie.github.io/tablesorter/docs/example-widget-editable.html) * Support for ROWSPAN and COLSPAN on TH elements. * Support secondary "hidden" sorting (e.g., maintain alphabetical sort when sorting on other criteria). * Extensibility via [widget system](http://mottie.github.io/tablesorter/docs/example-widgets.html). * Cross-browser: IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0+, Chrome 5.0+. * Small code size. * Works with jQuery 1.2.6+ (jQuery 1.4.1+ needed with some widgets). * Works with jQuery 1.9+ ($.browser.msie was removed; needed in the original version). ### Licensing * Copyright (c) 2007 Christian Bach. * Original examples and docs at: [http://tablesorter.com](http://tablesorter.com). * Dual licensed under the [MIT](http://www.opensource.org/licenses/mit-license.php) and [GPL](http://www.gnu.org/licenses/gpl.html) licenses. ### Special Thanks * Big shout-out to [Nick Craver](https://github.com/NickCraver) for getting rid of the `eval()` function that was previously needed for multi-column sorting. * Big thanks to [thezoggy](https://github.com/thezoggy) for helping with code, themes and providing valuable feedback. * Big thanks to [ThsSin-](https://github.com/TheSin-) for taking over for a while and also providing valuable feedback. * Also extra thanks to [christhomas](https://github.com/christhomas) and [Lynesth](https://github.com/Lynesth) for help with code. * And, of course thanks to everyone else that has contributed, and continues to contribute to this forked project! ### Change Log View the [complete listing here](https://github.com/Mottie/tablesorter/wiki/Change). #### Version 2.14.5 (12/16/2013) * Pager * Fix pager update when ajax returns no rows. Fixes [issue #456](https://github.com/Mottie/tablesorter/issues/456). * Add pager `processAjaxOnInit` option. Fixes [issue #424](https://github.com/Mottie/tablesorter/issues/424). * Fix & document inconsistentcies in pager triggered event parameters. * Disable pager arrows & show zero in display when `totalPages` is zero. Fixes [issue #460](https://github.com/Mottie/tablesorter/issues/460). * Filter row is now included in sticky header while using the pager. Fixes [issue #449](https://github.com/Mottie/tablesorter/issues/449). * Lots of thanks to [Lynesth](https://github.com/Lynesth) for sharing code fixes :) * Fix `stickyHeaders_attachTo` no positioning correctly. See [issue #295](https://github.com/Mottie/tablesorter/issues/295). #### Version 2.14.4 (12/14/2013) * Add Bootstrap 2 theme. Thanks to [themilkman](https://github.com/themilkman). * The `addRows` method now works with an empty table. Fixes [issue #450](https://github.com/Mottie/tablesorter/issues/450). * Sticky headers widget * Add `stickyHeaders_attachTo` option. Fixes issues [#295](https://github.com/Mottie/tablesorter/issues/295) & [#314](https://github.com/Mottie/tablesorter/issues/314). * Add `cssStickyHeaders_attachTo` option. Fixes [issue #453](https://github.com/Mottie/tablesorter/issues/453). * Added padding to wrapper in demo so Chrome doesn't add a horizontal scroll bar * Filter widget * Fix forced search to work again (i.e. `$('table').trigger('search', false);`) * Fix child row filtering - see [this Stackoverflow question](http://stackoverflow.com/q/20342203/145346) * Pager * The pager will update properly when ajax returns no rows. Fixes [issue #456](https://github.com/Mottie/tablesorter/issues/456) * Filter searches will now reset pager to the first page. Fixes [issue #456](https://github.com/Mottie/tablesorter/issues/456) * The pager will now properly count filtered rows when including/excluding child rows. Fixes [this Stackoverflow question](http://stackoverflow.com/q/20342203/145346). * The table cache will once again update after an ajax call. Fixes issues [#436](https://github.com/Mottie/tablesorter/issues/436) & [#437](https://github.com/Mottie/tablesorter/issues/437). #### Version 2.14.3 (12/2/2013) * Core * Refreshing widgets now only applies to previously installed widgets. Fixes [issue #442](https://github.com/Mottie/tablesorter/issues/442). * Pager * Ajax arrays now accept html instead of cell contents, e.g. `- 10`. Thanks [@christhomas](https://github.com/christhomas); fixes [issue #434](https://github.com/Mottie/tablesorter/pull/434). * Add ajax counter to only allow the most recent request to process. Thanks [@christhomas](https://github.com/christhomas); fixes [issue #443](https://github.com/Mottie/tablesorter/pull/443). * When filtering rows, the output will now show zeros for row & page counts instead of empty strings. * No more `fixedHeight` pager errors. Thanks [@hempel](https://github.com/hempel); fixes [issue #448](https://github.com/Mottie/tablesorter/issues/448). * Filter widget * Exact filter matches now properly override other queries. Fixes [issue #441](https://github.com/Mottie/tablesorter/issues/441). * Reverse range `20 - 10` work properly, again. See [issue #441](https://github.com/Mottie/tablesorter/issues/441). * Updated docs to show the filter precendence. See [footnote (2) under Notes](http://mottie.github.io/tablesorter/docs/example-widget-filter.html). * Sticky Headers widget * Now uses the filter widget `bindSearch` function allowing live search, delayed searching and escape to cancel on sticky header filters. * Thanks to [@haraldkrischner](https://github.com/haraldkrischner) for his help! * Fixes issues [#439](https://github.com/Mottie/tablesorter/issues/439) & [#440](https://github.com/Mottie/tablesorter/pull/440). * CSS Sticky Headers widget (beta) * Now works properly in IE9+. * Thanks [@gakreol](https://github.com/gakreol) * Fixes [issue #447](https://github.com/Mottie/tablesorter/issues/447). * Added Semantic version sorting demo * See the [demo here](http://mottie.github.io/tablesorter/docs/example-option-textsorter-semver.html). * This demo does not use a custom parser nor widget, it requires a modified [`semver.js` for node](https://github.com/isaacs/node-semver) file to sort the column using the `textSorter` option. * The modified `semver-mod.js` file is contained within the new "extras" folder (tablesorter/js/extras) along with the original unmodified `semver.js` file. * Extra code is also included to highlight invalid semantic versions within the table. * Fixes [issue #395](https://github.com/Mottie/tablesorter/issues/395). * Sorry I didn't get around to finding solutions for some of the other issues that I promised to have done this patch :( #### Version 2.14.2 (11/25/2013) * Removed Bootstrap filter cell background color. Fixes [issue #425](https://github.com/Mottie/tablesorter/issues/425). * Added css sticky header widget (beta) * This widget uses [css3 transforms](http://caniuse.com/#search=transform) to make the table header sticky. It's a bit jumpy in Chrome, but works well in other tested browsers. * This widget doesn't appear to work in IE10, but it should... it will not work in IE8 and older. * See [issue #429](https://github.com/Mottie/tablesorter/issues/429) for more information. * Stop repeat filter widget searches. Fixes [issue #431](https://github.com/Mottie/tablesorter/issues/431). * Prevent filter error. Fixes [issue #432](https://github.com/Mottie/tablesorter/issues/432). * Merged in and reverted [issue #433](https://github.com/Mottie/tablesorter/issues/433). * Editable widget * Updated docs with missing `editable_editComplete` callback event name option. * Modified the `editable_columns` option to allow setting a column range string, e.g. `"2-4"` instead of creating an array (`[2,3,4]`). * Fixes [issue #435](https://github.com/Mottie/tablesorter/issues/435). * Grouping widget * Invalid group class now fails silently. * Fixes [issue #438](https://github.com/Mottie/tablesorter/issues/438). #### Version 2.14.1 (11/22/2013) * Filter widget * External inputs bound using the filter `bindSearch` function now clear on the "filterReset" event. * Replace `Array.indexOf()` due to IE8. * Pager (plugin & widget) * Replace `Array.indexOf()` due to IE8. Fixes [issue #388](https://github.com/Mottie/tablesorter/issues/388). * Themes * Non-sortables headers now show the default cursor * Fix Dropbox theme to work properly within the sticky header demo * Fix Ice theme to include a top border in the sticky header demo * Tweaked sticky header widget to better align columns in Firefox & adjust caption to hide border edges. * See the [sticky header demo](http://mottie.github.io/tablesorter/docs/example-widget-sticky-header.html) to see these changes. * Fixes [#407](https://github.com/Mottie/tablesorter/issues/407). * Documentation * Update FAQ page to include information on the zebra widget not always working. * Update demos to use Bootstrap 3.0.2. * Add search instructions to the wiki documentation pages. * Add link to FAQ & search instructions on the main documenation page. * Add associated core version number to pager addon & widget, main widget file and filter formatter file. #### Version 2.14.0 (11/19/2013) **Core** * Changed sorting algorithms: * Due to problems with sorting multiple columns improperly sorting algorithms again include code to sort empty cells. * Internal sorting again has separate ascending and descending functions; but the previous `$.tablesorter.sortNatural` (ascending only), `$.tablesorter.sortNumeric` (ascending only) and `$.tablesorter.sortText` (ascending only) functions are still available. * Custom text & numeric sort functions, added via `textSorter` and `numberSorter` options now require you to return the sort in the correct direction. * Custom sort functions no longer have empty cells automatically handled for you. * Fixes [issue #419](https://github.com/Mottie/tablesorter/issues/419). * Added `sortStable` option which when `true` will sort exactly equal items by placing them in their original unsorted order (or, perform a [stable sort](http://en.wikipedia.org/wiki/Stable_sort#Stability)). * Removed double icon class names. * Added `tabIndex` option * When `true`, a tabindex is added to the headers for keyboard accessibility; this was previously always applied * When `false`, table headers will not be included when tabbing through the page * Fulfills [issue #415](https://github.com/Mottie/tablesorter/issues/415). **Filter widget** * Setting a filter to build a select no longer causes an error. Fixes [issue #421](https://github.com/Mottie/tablesorter/issues/421). * Added `filter_saveFilters` option * When `true`, this option saves the current filters using the storage utility (local storage with cookie fallback). * This option is set to `false` by default. * See [issue #388](https://github.com/Mottie/tablesorter/issues/388). * Allow multiple external filter inputs * The `$.tablesorter.filter.bindSearch( $table, $external )` function now allows binding searches using the built-in functioning. * The bind search function will unbind any previously bound `keyup` and `search` event listeners on the `$external` elements. * External inputs must not have a `tablesorter-filter` class to distinguish them from internal filters. * If not using the `filter_anyMatch` option, external filters can be set to target specific columns by including a `data-column` attribute. * See the new [filter external inputs demo](http://mottie.github.io/tablesorter/docs/example-widget-filter-external-inputs.html). * Filter reset button clicks will again trigger a `filterReset` event. Fixes [issue #423](https://github.com/Mottie/tablesorter/issues/423). **Grouping widget** * Merged in fix for grouping widget + filter widget + child row widget. * Updated demo with multi-child column styling. * Thanks [Xamamule](https://github.com/Xamamule) in [pull #414](https://github.com/Mottie/tablesorter/pull/414)! * This also fixes [issue #422](https://github.com/Mottie/tablesorter/issues/422). * Renamed variables & cleanup * Added `group_dateString` function to format the date string for `group-date` header class name. **Zebra widget** * Now skips removable rows added by other widgets, more specifically, it skips rows with a `remove-me` class name (set by the `selectorRemove` option). **Docs updates** * Added a side menu with search to the main document page. * The main documentation page now uses Bootstrap for some styles. * Search includes a count with clear search, previous result and next result buttons. * Search options included to find letters or whole words only, and choose if the search is case sensitive, or not. * The advantage of this search over the browser's built-in search (Ctrl-F) is that this search will find text within the hidden content * Indexing of the search results may not always be in order, i.e. "10/10" may not always be the lowest result on the page due to nested elements. * Sorry, IE7 and older users, the search works but but is really slow. And the side menu styling leaves much to be desired (using Bootstrap). * jQuery UI theme selector updates. See [issue #407](https://github.com/Mottie/tablesorter/issues/407). * Updated typos & css in various demos * Added Utility options section for options used by parsers, storage utility and pager ajax data. * Added removed options section. * This applies to pager options available in the original version of tablesorter which are no longer supported. * Fixes [issue #416](https://github.com/Mottie/tablesorter/issues/416). * Added `kbd` styling for better visualization of keyboard keys. **Other** * Renamed variables within the [pager custom control demo](http://mottie.github.io/tablesorter/beta-testing/example-pager-custom-controls.html) (still in beta) * Renamed variables within default widgets file * Utilities: storage, addHeaderResizeEvent,, resizableReset * Widgets: columns, resizable, stickyHeaders, uitheme, saveSort * Updated parser-date-two-digit-year.js to allow changing the date range * Set a different date range by adding a value to `table.config.dateRange`. * Instructions added to main documents under utility options * Storage utility (`$.tablesorter.storage`) now accepts a jQuery object as well as a DOM object of the table * `$.tablesorter.storage( $('#mytable'), 'myvariable', 'YAY' );`, or * `$.tablesorter.storage( $('#mytable')[0], 'myvariable', 'YAY' );`