jquery Tablesorter – 如果在中键入新文本,则不会正确排序

1)下面的代码将在加载到页面加载时对输入框进行排序,但如果我尝试编辑任何然后尝试再次对列进行排序,则按原始值排序,而不是按新值排序价值,你能帮忙解决这个问题吗?

2)如果我在键入新数字,然后单击列标题进行排序,那么我的输入模糊事件将不会触发,为什么以及您知道如何解决此问题?

 
Last Name Amounts
Smith1
Smith2
Smith3
Smith4

 $(document).ready(function() { $.tablesorter.addParser({ id: 'input', is: function(s) { return false; }, format: function(s, table, cell) { return $('input', cell).val(); }, type: 'numeric' }); $("#myTable").tablesorter({ headers: { 1: { sorter:'input' } } }); $('input').blur(function(){ alert($(this).val()); }); }); 

解析器只会在初始化时获取输入值。 只要输入值发生变化,您就需要更新它们。 话虽如此,我总是使用输入blur运气,我认为最好使用keyup检查更改。

无论如何,我在这里有一个动态输入解析器的演示 。 它“应该”与tablesorter的原始版本一起使用,但度假村选项将不可用。 否则,我知道它适用于我的forkorter分支 。

 // add parser that dynamically updates input values $.tablesorter.addParser({ id: 'inputs', is: function(s) { return false; }, format: function(s, table, cell) { var $c = $(cell); // return 1 for true, 2 for false, so true sorts before false if (!$c.hasClass('updateInput')) { $c .addClass('updateInput') .bind('keyup', function() { $(table).trigger('updateCell', [cell, false]); // false to prevent resort }); } return $c.find('input').val(); }, type: 'text' }); $(function() { $('table').tablesorter({ widgets: ['zebra'], headers: { 3: { sorter: 'inputs' } } }); });​ 

Mottie的回答对我有用 – 谢谢! 我不喜欢为了防止重复绑定而添加一个类,所以我将逻辑移到了外面:

 $("#mytable tbody").on("keyup", "input", function(event){ var table = $(this).closest("table"); var cellElement = $(this).closest("td")[0]; table.trigger("updateCell", [cellElement, false]); });