tablesorter (FORK) 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. This forked version adds lots of new enhancements including: alphanumeric sorting, pager callback functons, multiple widgets providing column styling, ui theme application, sticky headers, column filters and resizer, as well as extended documentation with a lot more demos. [![Bower Version][bower-image]][bower-url] [![NPM Version][npm-image]][npm-url] [![devDependency Status][david-dev-image]][david-dev-url] [![zenhub-image]][zenhub-url] ### 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. ### Download * Get all files: [zip](//github.com/Mottie/tablesorter/archive/master.zip) or [tar.gz](//github.com/Mottie/tablesorter/archive/master.tar.gz) * Use [bower](http://bower.io/): `bower install jquery.tablesorter` * Use [node.js](http://nodejs.org/): `npm install tablesorter` * CDNJS: [https://cdnjs.com/libraries/jquery.tablesorter](https://cdnjs.com/libraries/jquery.tablesorter) ### Related Projects * [Plugin for Rails](//github.com/themilkman/jquery-tablesorter-rails). Maintained by [themilkman](//github.com/themilkman). * [UserFrosting](//github.com/alexweissman/UserFrosting) (A secure, modern user management system for PHP that uses tablesorter) by [alexweissman](//github.com/alexweissman). ### Contributing If you would like to contribute, please... 1. Fork. 2. Make changes in a branch & add unit tests. 3. Run `grunt test` (if qunit fails, run it again - it's fickle). 4. Create a pull request. ### 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. * Thanks to [prijutme4ty](https://github.com/prijutme4ty) for numerous contributions! * 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! [npm-url]: https://npmjs.org/package/tablesorter [npm-image]: https://img.shields.io/npm/v/tablesorter.svg [david-dev-url]: https://david-dm.org/Mottie/tablesorter#info=devDependencies [david-dev-image]: https://img.shields.io/david/dev/Mottie/tablesorter.svg [bower-url]: http://bower.io/search/?q=jquery.tablesorter [bower-image]: https://img.shields.io/bower/v/jquery.tablesorter.svg [zenhub-url]: https://zenhub.io [zenhub-image]: https://raw.githubusercontent.com/ZenHubIO/support/master/zenhub-badge.png ### Recent Changes View the [complete change log here](//github.com/Mottie/tablesorter/wiki/Changes). #### Version 2.25.1 (1/10/2016) * Docs: * Update to jQuery v1.12.0. * Fix HTML hint issues. * Core: * Fix time parser detection. See [issue #1107](https://github.com/Mottie/tablesorter/issues/1107). * Add multiple widgets from table class. Fixes [issue #1109](https://github.com/Mottie/tablesorter/issues/1109). * Fix extra header class name updating. See [issue #1116](https://github.com/Mottie/tablesorter/issues/1116). * Fix typo in comments. * ColumnSelector: * Prevent remove widget js error. Fixes [issue #1106](https://github.com/Mottie/tablesorter/issues/1106). * Add `tbody` colspan support. See [issue #1120](https://github.com/Mottie/tablesorter/issues/1120). * Add child row colspan support. See [issue #1120](https://github.com/Mottie/tablesorter/issues/1120). * Filter: * Use replacement character instead of null (for IE). * Fix "or" test regex. Fixes [issue #1117](https://github.com/Mottie/tablesorter/issues/1117). * Restore `return false` to fix unit tests. * Functions now get exact data, ignoring parsed flag. Fixes [issue #1107](https://github.com/Mottie/tablesorter/issues/1107). * Parsed flag now all set `true` if `filter_useParsedData` is `true` & stop using `config.$headers`. * Output: * `output_callback` can now return modified data. See [issue #1121](https://github.com/Mottie/tablesorter/issues/1121). * Grunt: * Add HTML hint. #### Version 2.25.0 (12/13/2015) * Global * Use `triggerHandler` instead of `trigger` to prevent event bubble to any outer table. See [issue #1090](https://github.com/Mottie/tablesorter/issues/1090). * Core * Add `duplicateSpan` option (default is `true`) with unit tests ([demo](http://mottie.github.io/tablesorter/docs/example-colspan.html)). * Add triggered "removeWidget" method & update docs. * `applyWidgetId` now properly initializes a widget, if needed. * `applyWidgetId` now adds widget name to `widgets` option. * Show parsed data in debug log. See [issue #1084](https://github.com/Mottie/tablesorter/issues/1084). * Prevent js error - calling "applyWidgetId" on non-existant widget. * Prevent js error - trying to apply a non-existent widget. * Fix "updateCell" issue. If "updateCell" is triggered on a `thead` cell, or bubbles to an outer table, tablesorter no longer gets stuck in an "isUpdating" loop. * Ensure table has initialized before allowing use of "updateCell". See [issue #1099](https://github.com/Mottie/tablesorter/issues/1099). * Fix cache debug log for multiple tbodies. * After init, `computeColumnIndex` now only adds "data-column" attribute to mismatched indexes - lessens DOM interaction on tbody (e.g. math widget). * Add "sortBeforeEnd" event for internal widget binding. * Renamed `$.tablesorter.formatSortingOrder` to `$.tablesorter.getOrder`. * Include `table` in console.error if an issue is encountered during initialization. * Clean up warning when no parser is found for given data. * Fix `config.sortVars` js error for non-existent header cells (makes second column of [this demo](http://mottie.github.io/tablesorter/docs/example-colspan.html) sortable using "sorton"). * Docs * Add reference to datejs parser. See [issue #1084](https://github.com/Mottie/tablesorter/issues/1084). * Add note that reflow widget only works with HTML5. * Add note in filter localization about escaping special characters in regular expressions. See [issue #1101](https://github.com/Mottie/tablesorter/issues/1101). * Update & add all options in math widget demo. * Fix search tooltip not hiding on side menu close. * Update to Bootstrap v3.3.6. * Editable * Ensure table has initialized before allowing use of "updateCell". See [issue #1099](https://github.com/Mottie/tablesorter/issues/1099). * Filter * Prevent js error when `columnFilters` are `false`. Fixes [issue #1091](https://github.com/Mottie/tablesorter/issues/1091). * Restore column specific default filters. Fixes [issue #1088](https://github.com/Mottie/tablesorter/issues/1088). * Prevent `insideRange` filter type (`widget-filter-type-insideRange.js`) searches on "all" columns. * Prevent edge case js error. * Add "filterBeforeEnd" event for internal widget binding. * Filters that span multiple columns now have the correct "data-column" value set. * Consolidated code that parsed "data-column" ranges into a `findRange` function (e.g. external filters with `data-column="1-3,4-6,8"`). * Math * Add `"data-math-filter"` cell override of `math_rowFilter` option. See [issue #1083](https://github.com/Mottie/tablesorter/issues/1083). * Limit tbody cell processing & use `cellIndex` whenever possible. See [issue #1048](https://github.com/Mottie/tablesorter/issues/1048). * Use core `textExtraction` on cells. See [issue #1098](https://github.com/Mottie/tablesorter/issues/1098). * Initial calculation performed once - changed binding to either "filterEnd" or "pagerComplete", not both. * Added change flag so a cache update is only performed when cell content inside of a sortable tbody was modified. * Fix "data-math-filter" on "all" cell calculation with fixes to getRow & getColumn functions so that filters get priority over the "filtered" row check. See [issue #1083](https://github.com/Mottie/tablesorter/issues/1083). * Another "data-math-filter" fix and change flag fix. See [issue #1083](https://github.com/Mottie/tablesorter/issues/1083); thanks to [@lindonb](https://github.com/lindonb) for all the feedback! * `math_none` can now be set to an empty string. * Print * Popup made resizable & scrollable. See [issue #1081](https://github.com/Mottie/tablesorter/issues/1081). * Parsers * Checkbox row class & header now work with `sorter-false` set. See [issue #1090](https://github.com/Mottie/tablesorter/issues/1090). * Return `true` for header checkbox to work in IE8. See [issue #1090](https://github.com/Mottie/tablesorter/issues/1090). * Misc * gitignore file - ignore "idea" demos used for testing. #### Version 2.24.6 (11/22/2015) * Core * Prevent "tablesorter-ready" event from firing multiple times in a row. * While detecting parsers, use `cssIgnoreRow` & stop after 50 rows. * Docs * Update utility options section. * Math * Add `math_rowFilter` option. See [issue #1083](https://github.com/Mottie/tablesorter/issues/1083). * Spelling corrections to `math_rowFilter` option. * Ensure internal updating flag gets cleared. Fixes [issue #1083](https://github.com/Mottie/tablesorter/issues/1083). * Pager * Initial page no longer ignored (no filter widget). Fixes [issue #1085](https://github.com/Mottie/tablesorter/issues/1085). * Fix other page set issues (no filter widget). Fixes [issue #1085](https://github.com/Mottie/tablesorter/issues/1085). * Fix page set issues (with filter widget). Fixes [issue #1085](https://github.com/Mottie/tablesorter/issues/1085). * Clean up pager widget code. * Print * Add `print_now` option. See [issue #1081](https://github.com/Mottie/tablesorter/issues/1081). * Fix print & close button actions. * SortTbodies * Use config parameter for numeric sorting. See [issue #1082](https://github.com/Mottie/tablesorter/issues/1082). * Parsers: * Update `parser-input-select.js`. See [issue #971](https://github.com/Mottie/tablesorter/issues/971). * `parser-date-month.js` no longer removes other language data. * Add alternate date range parser & update filter insideRange filter type. * Don't use `$.extend` for simple additions. * Misc * Update grunt dependencies.