Я создаю форму поиска, которая фильтрует результаты на основе ввода текста, а также выбирает параметры из четырех отдельных раскрывающихся списков (категория, подкатегория, местоположение и т. Д.).
Следующие две функции работают хорошо, но я только что понял, что если я наберу поисковый термин во вводе, сделаю выбор в раскрывающемся списке, а затем вернусь и введу другой поисковый термин, мои выпадающиеигнорируются.
Я нашел решения для подобных проблем на этом сайте, но ничего, что относится к моей конкретной ситуации.
Это фильтр для выпадающих списков :
$("select.filterby").change(function(){
var filters = $.map($("select.filterby").toArray(), function(e){
return $(e).val();
}).join(".");
$("div#flatdiv").find("article").hide();
$("div#flatdiv").find("article." + filters).show();
});
, а вот фильтры, основанные на результатах поиска:
$(document).ready(function(){
$("#title").on("keyup", function() {
var value = $(this).val().toLowerCase();
$("#flatdiv article").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
});
});
Один использует true .filter()
, а другой использует .find
до show()
и hide()
.
Я не уверен, куда идти отсюда.Я делал разные попытки, но каждая из них не дает результатов, так что я надеюсь, что кто-то может мне помочь.
ОБНОВЛЕНИЕ: Вот финал, который прекрасно работал!
//apply selection form any drop down forms
$("select.filterby").change(function(){
var filters = $.map($("select.filterby").toArray(), function(e){
return $(e).val();
}).join(".");
$("div#flatdiv").find("article").addClass("hidden-by-category-filter");
$("div#flatdiv").find("article." + filters).removeClass("hidden-by-category-filter");
});
//apply text input from search form
$("#title").blur(function(){
var textFilters = $(this).val().toLowerCase();
$("article:contains(" + textFilters +")").removeClass("hidden-by-text-filter");
$("article:not(:contains(" + textFilters +"))").addClass("hidden-by-text-filter");
});