jQuery过滤表与计数结果

时间:2015-02-02 10:19:00

标签: jquery filter

我发现这里有一些解决方法如何过滤表格。我试图修改它并添加语句,以防没有找到结果,我做了 - 但 - 当我长期保持退格键从输入中删除所有值或将数字输入到输入然后我删除它时,语句仍然可见。 有谁知道如何解决它?

$("#searchInput").keyup(function () {
    //split the current value of searchInput
    var data = this.value.split(" ");
    //create a jquery object of the rows
    var jo = $("#fbody").find("tr");
    if (this.value == "") {
        jo.show();
        return;
    }
    //hide all the rows
    jo.hide();

    //Recusively filter the jquery object to get results.
   var x = jo.filter(function (i, v) {
        var $t = $(this);
        for (var d = 0; d < data.length; ++d) {
            if ($t.text().toLowerCase().indexOf(data[d].toLowerCase()) > -1) {
                return true;
            }
        }
        return false;
    })
    //show the rows that match.
    .show().length;

        if(x == 0) {
        $('table').find('tfoot > tr > td').html('no results');
    } else {
         $('table').find('tfoot > tr > td').html('test');
    }
}).focus(function () {
    this.value = "";
    $(this).css({
        "color": "black"
    });
    $(this).unbind('focus');
}).css({
    "color": "#C0C0C0"
});

fiddle

1 个答案:

答案 0 :(得分:0)

您使用.keyup进行searchInput。这意味着当你保持退格时,它会一直运行直到你释放退格。使用与.keyup相同代码的.keydown可以解决该问题。

所以为.keydown制作第二个绑定。

此外,您的代码不会在复制,粘贴,鼠标切割上运行。请参阅这些绑定以使其正常工作http://www.mkyong.com/jquery/how-to-detect-copy-paste-and-cut-behavior-with-jquery/