How can I sort columns having input elements?
This is the more complete/correct version of Haart's answer.
$(document).ready(function() {
$.tablesorter.addParser({
id: "input",
is: function(s) {
return false;
},
format: function(s, t, node) {
return $(node).children("input[type=checkbox]").is(':checked') ? 1 : 0;
},
type: "numeric"
});
sorter = $("#table").tablesorter({"headers":{"0":{"sorter":"input"}}});
// The next makes it respond to changes in checkbox values
sorter.bind("sortStart", function(sorter){$("#table").trigger("update");});
});
Add a hidden span just before the input, and include in it some text (that will be used to sort the column). Something like:
<td>
<span class="hidden">1</span>
<input type="checkbox" name="x" value="y">
</td>
If needed, you can attach an event to the checkbox so that it modifies the content of the previous sibling (the span) when checked/unchecked:
$(document).ready(function() {
$('#tableid input').click(function() {
var order = this.checked ? '1' : '0';
$(this).prev().html(order);
})
})
Note: I haven't checked the code, so it might have errors.