1

複数のキーワードでテーブルをフィルタリングしようとしていますが、trすべてのキーワードが含まれている場合は表示されます。でうまく機能するものを見つけました ulが、テーブルでは奇妙に動作します。ここで jsfiddle : http://jsfiddle.net/AtkNW/81/

フィルターはtd、それぞれの 2 番目または 3 番目のみをチェックするようtrです。何が欠けていますか?私は手を使うことができました。

$("#kwd_search").keyup(function () {

var filter = $(this).val().toLowerCase(),
    count = 0;
var length = $(this).val().length;
if (length > 1) {
    var filter_tags = filter.split(" ");
    $("#dep td").each(function () {
        var $this = $(this);
        var matches = true;
        $.each(filter_tags, function (i, a_filter) {
            if ($this.text().toLowerCase().indexOf(a_filter) === -1) {
                matches = false;
            }
        });
        if (matches) {
            $this.parent("tr").removeClass("hidden");
        } else {
            $this.parent("tr").addClass("hidden");
        }
    });
} else {
    $("#dep td").parent("tr").removeClass("hidden");
}
});
4

2 に答える 2

0

今日も同様の目的でこれを書きました...お役に立てば幸いです!

$("#kwd_search").keyup(function () {
    var jqSearchBox = $(this);
    var rows = $("#dep > tbody > tr");

    if (jqSearchBox.val().length < 2) {
        rows.show();
        return;
    } else {
        rows.hide();
    }

    // split, trim, lowercase, and remove empty strings
    var searchTerms = $.map(jqSearchBox.val().toLowerCase().split(" "), function (el) {
        return el !== "" ? $.trim(el) : null;
    });

    rows.each(function () {
        var row = $(this);
        var foundAll = true;

        $.each(searchTerms, function (idx, val) {
            if (row.text().toLowerCase().indexOf(val) === -1) {
                foundAll = false;
                return false;
            }
        });

        if (foundAll)
            row.show();                 
    });
});
于 2014-12-03T18:40:23.887 に答える