0

我想按 3 个字段过滤我的表,但是这三个字段都是可选的,我可以按一个字段或两个或三个字段进行搜索。至少应设置一个字段。

这是我所达到的,此代码对一个字段非常有效,如果我以这种方式添加其他字段,则应设置它们。我该如何介绍可选性?

    $('#submitButton').click(function() {
    var quantity = $("[name='quantity']").val();
    var category = $('select.categorylist option:selected').val();
    var brand = $("[name='brand']").val();

     $("table tbody tr").hide();

    $("table tbody tr").each(function()
        {
            if ($(this).find("td:eq(3):contains('" + quantity + "')").html() != null)
                {
                    $(this).show();
                }
         });
    return false ; 

});
4

1 回答 1

1

您可以使用filter这样的功能:

$('#submitButton').click(function() {

    var quantity = $("[name='quantity']").val(),
        category = $('select.categorylist option:selected').val(),
        brand = $("[name='brand']").val();

    $("table tbody tr:not(.header, .filters)").hide().filter(function() {
        var q = quantity ? this.cells[0].innerHTML === quantity : true,
            c = category ? this.cells[1].innerHTML === category : true,
            b = brand ? this.cells[2].innerHTML === brand : true;
        return q && c && b;
    }).show();

    return false;
});

http://jsfiddle.net/v4HYP/

因此,仅当每列的值与相应的过滤器匹配时才会显示行。

于 2013-04-08T12:53:03.747 回答