jquery Tablesorter - 如果在<input>中输入新文本,则不能正确排序

Hel*_*rld 2 javascript jquery tablesorter

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

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

<table id="myTable" class="tablesorter"> 
<thead> 
<tr> 
    <th>Last Name</th> 
    <th>Amounts</th> 

</tr> 
</thead> 
<tbody> 
<tr> 
    <td>Smith1</td> 
    <td><input type="text" value="1"/></td> 
</tr> 
<tr> 
    <td>Smith2</td> 
    <td><input type="text" value="2"/></td> 
</tr> 
<tr> 
    <td>Smith3</td> 
    <td><input type="text" value="3"/></td> 
</tr> 
<tr> 
    <td>Smith4</td> 
    <td><input type="text" value="4"/></td> 
</tr> 
</tbody> 
</table> 
Run Code Online (Sandbox Code Playgroud)
$(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());

   });

});
Run Code Online (Sandbox Code Playgroud)

小智 5

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

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