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. ### Notice! * Because of the change to the internal cache, the tablesorter v2.16+ core, filter widget and pager (both plugin & widget) will only work with the same version or newer files. ### [Documentation](//mottie.github.io/tablesorter/docs/) * See the [full documentation](//mottie.github.io/tablesorter/docs/). * All of the [original document pages](//tablesorter.com/docs/) have been included. * Information from my blog post on [undocumented options](//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](//github.com/Mottie/tablesorter/wiki/Changes). ### Demos * [Basic alpha-numeric sort Demo](//mottie.github.com/tablesorter/). * Links to demo pages can be found within the main [documentation](//mottie.github.io/tablesorter/docs/). * More demos & playgrounds - updated in the [wiki pages](//github.com/Mottie/tablesorter/wiki). ### Features * Multi-column alphanumeric sorting and filtering. * Multi-tbody sorting - see the [options](//mottie.github.io/tablesorter/docs/index.html#options) table on the main document page. * Supports [Bootstrap v2 and 3](//mottie.github.io/tablesorter/docs/example-widget-bootstrap-theme.html) * Parsers for sorting text, alphanumeric text, URIs, integers, currency, floats, IP addresses, dates (ISO, long and short formats) & time. [Add your own easily](//mottie.github.io/tablesorter/docs/example-parsers.html). * Inline editing - see [demo](//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](//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, starting at 25K minified * 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](//tablesorter.com). * Dual licensed under the [MIT](//www.opensource.org/licenses/mit-license.php) and [GPL](//www.gnu.org/licenses/gpl.html) licenses. ### Related Projects * [Plugin for Rails](//github.com/themilkman/jquery-tablesorter-rails). Maintained by [themilkman](//github.com/themilkman). * [PHP templating engine for tablesorter](//github.com/alexweissman/bootsole) by [alexweissman](//github.com/alexweissman). ### Special Thanks * Big shout-out to [Nick Craver](//github.com/NickCraver) for getting rid of the `eval()` function that was previously needed for multi-column sorting. * Big thanks to [thezoggy](//github.com/thezoggy) for helping with code, themes and providing valuable feedback. * Big thanks to [ThsSin-](//github.com/TheSin-) for taking over for a while and also providing valuable feedback. * Also extra thanks to [christhomas](//github.com/christhomas) and [Lynesth](//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! ### Questions? * Check the [FAQ](//github.com/Mottie/tablesorter/wiki/FAQ) page. * Search the [main documentation](//mottie.github.io/tablesorter/docs/) (click the menu button in the upper left corner). * Search the [issues](//github.com/Mottie/tablesorter/issues) to see if the question or problem has been brought up before, and hopefully resolved. * If someone is available, ask your question in the `#tablesorter` IRC channel at freenode.net. * Ask your question at [Stackoverflow](//stackoverflow.com/questions/tagged/tablesorter) using a tablesorter tag. * Please don't open a [new issue](//github.com/Mottie/tablesorter/issues) unless it really is an issue with the plugin, or a feature request. Thanks! ### Change Log View the [complete listing here](//github.com/Mottie/tablesorter/wiki/Changes). #### Version 2.18.2 (11/3/2014) * Filter widget * Fixed initialization intermittently stalling. * Pager addon & widget * Fixed pager addon javascript error. * Fixed pager widget not firing off "pagerComplete" in non-ajax tables. * Fixed `savePages` being overwritten on initialization. * Fixed pager widget updating the table content in non-ajax tables. #### Version 2.18.1 (11/3/2014) * Core * Add `cssAllowClicks` option; setting "tablesorter-allowClicks" on a header cell will allow clicks to bubble up. * A column can now be targetted using a class name within the header cell as well as the header cell itself; this only applies to previous options that could use a class name/id to target the header cell. * Docs * Emphasize that this is a fork of tablesorter. Fixes [issue #758](https://github.com/Mottie/tablesorter/issues/758). * Update jQuery UI to 1.11.2. * Update to Bootstrap 3.3.0. * Update QUnit & fixed testing errors. * Various updates to version numbers & corrections. * ColumnSelector widget: * Remove breakpoint sorting. See [pull #759](https://github.com/Mottie/tablesorter/pull/759). Thanks [yelly](https://github.com/yelly)! * CssStickyHeaders widget: * Fixed Chrome caption issue. * Nested tables now work properly in IE. * Pager addon & widget * Fix `selectorRemove` class name parseing. * A `pagerComplete` event now fires off immediately after initialization & once again fires on non-ajax tables. * Fix double `pagerComplete` events firing on init & initial filter settings. * Fix pager initialization with filter widget & displaying page output. Fixes [issue #755](https://github.com/Mottie/tablesorter/issues/755) & [issue #757](https://github.com/Mottie/tablesorter/issues/757). * Current filters now update properly. See [issue #757](https://github.com/Mottie/tablesorter/issues/757). * UItheme widget: * Fixed undefined removeClass selector which previously removed all classes. #### Version 2.18.0 (10/26/2014) * Core * Move "ipAddress" parser into `parser-network.js` parser file. * Add "image" parser to core. * Add `widgetClass` option * Allows adding widgets to the table by adding a table class name. * Fix debug logs for applying widgets. * Fixes [issue #743](https://github.com/Mottie/tablesorter/issues/743). * Add `$cell` parameter to parser detection `is` function (`is: function(s, table, cell, $cell) { /* ... */ }`). * Add `$table` parameter to `onRenderHeader` function (`onRenderHeader: function (index, config, $table){ /* ... */ }`). * Fix ARIA caption label reference. * Get column index from data-attribute when sorting. * The `aria-labelledby` attribute is no longer to all nested captions. * Update `widgetClass` option matching. See [issue #743](https://github.com/Mottie/tablesorter/issues/743). * Themes * Include caption element in metro theme; update various demo theme selectors to include the metro theme. * Fix zebra striping in nested tables. * Parsers * Created `parser-network.js` parser * Removed "ipAddress" parser from core. * Move "ipAddress" parser into this file; a duplicate of the parser named "ipv4Address" is included. * Moved "ipv6Address" parser into this file. * Added new MAC parser. * Update all date parsers to ensure a valid date is being parsed. * Add named number parser & demo. * Column Selector widget * Prevent adding a media query when no priorities are set. * `col` element will now be hidden along with the column. Fixes [issues #740](https://github.com/Mottie/tablesorter/issues/740). * Editable widget * Make updatable so this widget works with the pager. Fixes [issue #732](https://github.com/Mottie/tablesorter/issues/732). * Filter widget * Fix wildcard match logic to behave logically. Fixes [issue #727](https://github.com/Mottie/tablesorter/issues/727). * Add `filter_cellFilter` option. Fixes [issue #731](https://github.com/Mottie/tablesorter/issues/731). * External inputs can now target multiple columns (e.g. `data-column="0-2,4,6-7"`); see [this Stackoverflow question](http://stackoverflow.com/q/26470602/145346). * Any match filters now properly uses `filter_ignoreCase`. Fixes [issue #748](https://github.com/Mottie/tablesorter/issues/748). * Fix saved filter updates to multiple or "any" column inputs. * Grouping widget * Add "monthyear" grouping to dates. Fixes [issue #744](https://github.com/Mottie/tablesorter/issues/744). * Pager addon & widget * Use a sample of page number links for large collections. * Add `maxOptionSize` option * Tweak code & fix problems introduces in [pull #711](https://github.com/Mottie/tablesorter/pull/711). * Thanks [camallen](https://github.com/camallen)! * Fix ouput display not updating on initialization. * Add url check to allow ajax updating of table. Fixes [issue #730](https://github.com/Mottie/tablesorter/issues/730). * Check for dynamically changing `ajaxUrl` option. * Add `ajaxObject` to the `table.config.pager` variable. * IE requires a value attribute for every option. Fixes [issue #734](https://github.com/Mottie/tablesorter/issues/734). * Revert some code modified for large collections to use jQuery instead of native javascript (more IE issues). * Ensure `pager.filteredRows` is current on page move. See [issue #745](https://github.com/Mottie/tablesorter/issues/745). * Fix empty table select showing 0 & 1 pages. * The `fixedHeight` option is now working properly. Fixes [issue #742](https://github.com/Mottie/tablesorter/issues/742) & [issue #729](https://github.com/Mottie/tablesorter/issues/729). * Widget cleanup & only use the last search data. * Add note about including an ajax `success` function within the `ajaxObject` definition. See [issue #749](https://github.com/Mottie/tablesorter/issues/749). * RepeatHeaders widget * Now works with filtered & nested tables. * Resizable widget * Make it work inside of an overflow container. Fixes [issue #737](https://github.com/Mottie/tablesorter/issues/737). * Scroller widget * Remove `scroller_idPrefix` in lieu of a unique namespace id. * StickyHeaders widget * Now stacks when within a nested table. * Wrapped sticky header components (`thead` & `caption`) in a sticky div. * Added `stickyHeaders_xScroll` and `stickyHeaders_yScroll` options. * Removed jQuery UI selection from the demo to allow the accordion to be properly themed. * CssStickyHeaders widget * Now stacks when within a nested table. * Removed `cssStickyHeaders_zIndex` option as the widget no longer uses relative positioning (it wasn't necessary) * Please note that **using this widget on nested tables does not work properly in ALL versions of IE** (including IE11). * UITheme * Ignore nested tables. * Add method to remove previous theme. * Fix multiple header row sort icons. #### Version 2.17.8 (9/15/2014) * Core * Fix `widthFixed` option to ignore info block tbodies. * Make `emptyTo` & `stringTo` settings case insensitive. * An empty string `headerTemplate` option will now prevent adding an inner div to the header. * Docs * Fix setting active accordion from hash script. * Add `emptyTo` clarification. * Main readme: Add related projects section. * Editable * Autoresort true no longer breaks the table. * Update demo to use row id instead of index. * Update validate function to allow setting it per column. * Add `editable_focus`, `editable_blur` and `editable_selectAll` options. See [issue #708](//github.com/Mottie/tablesorter/issues/708). * Add `editable_wrapContent` option. * Add `editable_trimContent` option. * Validate function now includes a contenteditable element parameter. * All text callback parameters are now trimmed. * Trim everything & revert widget changes. * Refocus edited element after resort only. * Switch form focus to focusout. * Filter * Add `filter_defaultFilter` option. * fix issue with using class selectors. * Make happy with spaces within the query. * Will override exact/partial select filters. Fixes [issue #721](//github.com/Mottie/tablesorter/issues/721). * Fixes [issue #704](//github.com/Mottie/tablesorter/issues/704). * Add `filter_excludeFilter` option; add multiple exclusions separated by spaces, not commas. * Prevent multiple searches during initialization. * Ensure initial filter settings get applied. * Selects will exactly match the selected option unless "filter-match" class is set. Fixes [issue #721](//github.com/Mottie/tablesorter/issues/721). * Pager * Update cache & rows copy. Fixes [issue #703](//github.com/Mottie/tablesorter/issues/703). * Use native javascript to populate & set the goto select. Fixes [issue #711](//github.com/Mottie/tablesorter/issues/711). * Custom pager controls. Fix control updates for multiple tables. * Fix pager widget to be properly applied after a page move. * StickyHeaders: Fix issue so it works with jQuery v1.2.6 again. * Zebra: Apply style to one row. Fixes [issue #715](//github.com/Mottie/tablesorter/issues/715). * Parser * Duration parser - added with [demo](//mottie.github.io/tablesorter/docs/example-parsers-duration.html). * Select parser - Fix for IE10+ not allowing select options to be clicked. * IgnoreArticles parser - Added `ignoreArticlesExcept` option. * url parser - ensure it is used by the filter widget.