Выбор формы jQuery при изменении таблицы фильтров - PullRequest
0 голосов
/ 28 ноября 2011

У меня есть форма с четырьмя выпадающими списками, в каждом из которых указано X количество значений;

Тема, Тип, Месяц, Местоположение

И затем у меня естьтаблица с несколькими строками, извлеченными из базы данных с одинаковыми заголовками столбцов.

Тема, тип, месяц, местоположение

Каждая строка данных отличается.

Я хочу создать систему фильтров, в которую входит функция $(select).change, создает массив значений из всех выбранных раскрывающихся списков и затем применяет функцию jquery hide/show, где бы она ни соответствовала.Строки таблицы имеют классы, назначенные им динамически, например:

<tr class="subjectVal typeVal monthVal locationVal"><td>lorem ipsum</td>...</tr>

На данный момент у меня есть:

$("form select").change(function() {

    var values = [];        
    $("form select").each(function() {
        if ($(this).val() != "Please select...") {
            values.push($(this).val());
        }
    });

    $("table.events tr.row").each(function() {
        tr = $(this);
        $.each( values, function(index, item){
            if (!$(tr).hasClass(item)) {
                $(tr).hide();

            } else {
                $(tr).show();
            }
        });

    });

});

Но это, если массив значений содержит более одного элемента, только этот элементфильтрует таблицу.Если я выберу тему, затем выберу место, оно всегда будет отображать все эти места, независимо от того, какой предмет я выбрал.

1 Ответ

1 голос
/ 28 ноября 2011

Так что в основном он должен показывать только строку, если все значения совпадают? Если так, то этот код должен работать:

$("table.events tr.row").each(function() {
    var tr = $(this), show = true;
    $.each( values, function(index, item){
        if (!tr.hasClass(item)) {
            show = false;
        }
    });
    tr.toggle(show);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...