mirror of
https://github.com/Mottie/tablesorter.git
synced 2024-11-15 23:54:22 +00:00
13 KiB
13 KiB
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
- See the full documentation.
- All of the original document pages have been included.
- Information from my blog post on undocumented options and lots of new demos have also been included.
- Change log moved from included text file into the wiki documentation.
Demos
- Basic alpha-numeric sort Demo.
- Links to demo pages can be found within the main documentation.
- More demos & playgrounds - updated in the wiki pages.
Features
- Multi-column alphanumeric sorting and filtering.
- Multi-tbody sorting - see the options table on the main document page.
- Supports Bootstrap v2 and 3
- Parsers for sorting text, alphanumeric text, URIs, integers, currency, floats, IP addresses, dates (ISO, long and short formats) & time. Add your own easily.
- Inline editing - see demo
- 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.
- 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.
- Dual licensed under the MIT and GPL licenses.
Related Projects
- Plugin for Rails. Maintained by themilkman.
- PHP templating engine for tablesorter by alexweissman.
Special Thanks
- Big shout-out to Nick Craver for getting rid of the
eval()
function that was previously needed for multi-column sorting. - Big thanks to thezoggy for helping with code, themes and providing valuable feedback.
- Big thanks to ThsSin- for taking over for a while and also providing valuable feedback.
- Also extra thanks to christhomas and 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 page.
- Search the main documentation (click the menu button in the upper left corner).
- Search the 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 using a tablesorter tag.
- Please don't open a new issue unless it really is an issue with the plugin, or a feature request. Thanks!
Change Log
View the complete listing here.
Version 2.17.7 (8/9/2014)
- Core: Do not detach rows before appending to prevent ajax rows from disappearing. Fixes issue #701.
- Docs: Fix change log links.
- Filter: attached external select causing javascript errors. Fixes issue #702
Version 2.17.6 (8/1/2014)
- Core
- Adding a class name of
parser-false
to a column will now automatically setsorter-false
andfilter-false
behavior. - Add extractor type which allows giving a column two parsers, one to extract content from an input/select and the second to parse the extracted text. Thanks to TheSin-!
- Ensure custom parsed data adheres to the
ignoreCase
option. - Add a delay to any sort if there is an update in progress. This prevents issues with a sort being applied causing duplicate rows to be added to the table, hopefully.
- The
widthFixed
option now finds both visibleth
andtd
cells within the first row of the tbody to set column width percentages. - Ensure all rows have a set role for screen readers (
role="row"
). Fixes issue #690. - Redefine
c.$headers
when building headers for new/replaced header cells (not just content). Fixes issue #683.
- Adding a class name of
- Docs
- Fixed lots of minor HTML issues (e.g. missing closing
</li>
&<p>
tags)
- Fixed lots of minor HTML issues (e.g. missing closing
- Parsers
- Add parser for textareas within the
parser-input-select.js
file. - Modify input & textarea parser to only update the table cache when:
- The user presses enter (input) or alt + enter (textarea) within the element.
- When the element is blurred.
- Or, when the mouse leaves the tbody.
- Add parser for textareas within the
- Editable
- Add two new options:
editable_autoAccept
: accepts any changes made to the table cell automatically (true
by default)editable_validate
: a function used to validate the changes; return a valid string (null
by default)
- Modify
editable_columns
type check to prevent javascript errors. See pull #688. Thanks scratcher28! - Limit the
editable_columns
array value to columns within the table.
- Add two new options:
- Filter
- Make all options show within the current select when the
filter-onlyAvail
class is set on a column. - Updated & added docs for
$.tablesorter.filter.buildSelect
function to allow external calls to modify filter select options. - Update
filter_selectSource
to accept arrays instead of a function. This was documented as working, but it wasn't coded until now. Sorry! - Add
filter_selectSourceSeparator
option:- Include a separator within the
filter_selectSource
array (e.g. "a-z|A through Z"). - The text that is left of the separator is added to the option value, the the text on the right is added to the option text.
- So
"a-z|A through Z"
becomes<option value="a-z">A through Z</option>
. - Fixes issue #692.
- Include a separator within the
- Add
role="row"
to the filter row. Fixes issue #697. - Any match inputs now follow the
filter_startsWith
setting. See this Stackoverflow question.
- Make all options show within the current select when the
- Pager
- The
ouput
option can now include user modifiablestartRow
({startRow:input}
) orpage
({page:input}
) inputs within the output. - Remove selected attribute from page selector options. Fixes issue #700.
- The
- Resizable
- Update
$.tablesorter.addHeaderResizeEvent
function's first parametertable
to accept table DOM elements as well as jQuery objects. Fixes issue #687.
- Update
Version 2.17.5 (7/17/2014)
-
Core
- Update
config.totalRows
variable before initialization. Fixes issue #670. - Add
config.table
variable; useful for functions that only pass theconfig
. - Ensure widget init functions are only called once; and set indicator for all widgets, not just ones with options (for
hasWidget
).
- Update
-
Docs
- Add custom filter widget search types demo.
- Add
imgAttr
parser "utility option" instructions.
-
Filter
- Force cache build on initial search when
delayInit
istrue
. Fixes issue #678. - Make
config.filteredRows
count available withinfilterInit
event. Fixes issue #670. - Selects now obtain parsed data when it is set for a particular column. Fixes issue #684.
- Ignore change event if input value hasn't changed, otherwise it interferes with other events within the table. Fixes issue #685.
- Ensure search query is parsed for both specific filter types and non-filter type searches, if the column is set to use parsed data.
- Filter initialization ("filterInit") event is now delayed to prevent filterStart & filterEnd event spamming. Fixes issue #668.
- Filter formatter functions are now required to call a function after initialization to delay "filterInit" event. Fixes issue #668.
- Force cache build on initial search when
-
Output
- Update download method which allows downloading files without modifying the server htaccess. Fixes issue #681.
-
Pager
- Initialize without building cache when
delayInit
istrue
. Fixes issue #678.
- Initialize without building cache when
-
Parsers
- Update input/select element binding
- Add image alt parser; set
config.imgAttr
with attribute to target (default is"alt"
). - Add
select-text
parser which grabs the currently selected option text instead of the select value.
-
Resizable
- Remove unused grip code
Version 2.17.4 (7/4/2014)
-
Docs
- Copied the tablesorter
initialized
option from the event section into the configuration; renamed the event appropriately (tablesorter-initialized
event) - Added notes about how to bind to "init" events; they should be bound before initializing tablesorter because in most cases, the events fire before the binding occurs.
- Copied the tablesorter
-
Core
- Add
$.tablesorter.hasWidget(table, 'widgetId')
function. It returns a boolean value oftrue
when the named widget is actively applied to the table.
- Add
-
Filter
- Add
filter_searchFiltered
option to allow disabling the search of already filtered rows. - The
filter_initialized
flag now gets set appropriately. Fixes issue #668. - Include any column filter in determination of searching already filtered rows. Fixes issue #669.
- Add internal
config.filteredRows
variable. Provides a value of the number of currently filtered (visible) rows. Fixes issue #670. - Add internal
config.totalRows
variable. Provides a value of the total number of rows in the current table, not including info-tbody rows. - Fix change/search event being ignored for selects & filterFormatter extensions.
filterInit
andfilterEnd
events now passconfig
as a parameter.
- Add
-
Pager
- Removed from beta status
- Filtered rows now equals the total rows when
ajaxProcessing
returns an array. Fixes issue #667. - Update the
config.filteredRows
when using ajax to match the internalconfig.pager.filteredRows
. See issue #670. - Widget only: ensure
pagerComplete
event fires on initialization.
-
Resizable
- Bind mousemove to document instead of table header. Makes resizable handle use consistent with other resizing libraries, as the user would expect. Fixes issue #665.
- Add
resizable_throttle
option to allow throttling of the mousemove/resize event. Set this option totrue
or a number between 1 and 10 to add a throttling delay. Fixes issue #662.
-
UITheme: non-existent columns no longer cause a js error. Fixes issue #672.