2016-04-12 2 views
0

Я пытаюсь создать фильтр страницы, чтобы показать скрыть div на основе значений выпадающего списка, для чего на одной странице было два поля выбора, а в некоторых из них было 3 комбинации ящиков и после выбора каждого значения из select box, который должен показывать или скрывать определенный div. Мне посчастливилось добраться до точки, но не смогли получить дополнительную помощь.множественный фильтр выбора окна, чтобы показать скрыть div

$(".submit-button-filter").click(function() { 
     $(function(){ 

     var places = $("#places").val(); 
     var zones = $("#zones").val(); 
     var stories = $("#stories").val(); 
     var year = $("#year").val(); 
     var month = $("#month").val(); 
     var filters= [places, zones, stories, year, month]; 
     console.log(filters); 

     if(year == 'Year' && month == 'Month'){ 
      alert("Select Filer value"); 
     } 
     else if(year == 'Year' || month == 'Month'){ 
      alert("Select combine Filer value"); 
     } 
     else{ 
      $('.row-sort').hide(); 

     } 

     }); 
    }); 

Here is fiddle for my code

ответ

0

вы выборка раскрывающегося выбранного значения, но первый вариант в выбери тег не имеют значения атрибута поэтому попробуйте ниже кода

var year = $("#year :selected").text(); 
var month = $("#month :selected").text(); 
+0

$ ("# места"), $ ("# зон"), $ ("# истории"), $ ("# год"), $ (». #month ") Если какой-либо из этих элементов также является тегом Select, попробуйте, как и выше. –

0

Вам просто нужно перебирать каждый DIV с классом row-sort и проверить, доступны ли выбранные опции в качестве классов в этих div. Если да, просто покажите им.

$(".submit-button-filter").click(function() { 
     $('.row-sort').hide(); // hide all divs 

     var year = $("#year").val(); 
     var month = $("#month").val(); 
     var filters= [year, month]; 

     if(year == 'Year' && month == 'Month'){ 
      alert("Select Filer value"); 
     } 
     else if(year == 'Year' || month == 'Month'){ 
      alert("Select combine Filer value"); 
     } 
     else 
     { 
      $('.row-sort').each(function() 
      { 
      if($(this).hasClasses(filters)) 
       $(this).show(); 
      });   
     } 
    }); 

// user defined function to check for multiple classes using hasClass 
$.fn.extend({ 
     hasClasses: function (selectors) { 
     var self = this; 
     for (var i in selectors) { 
      if ($(self).hasClass(selectors[i])) 
       return true; 
     } 
     return false; 
    } 
}); 

Рабочий пример: https://jsfiddle.net/DinoMyte/p4ow1h7f/5/

+0

очень благодарен Dino за вашу быструю помощь, и теперь мне удалось создать комбинированный фильтр из вашего кода, но перед новой проблемой, если бы я хотел чтобы показать предупреждение, если значение фильтра не соответствует, но предупреждение идет даже по совпадающему значению, вот обновленная скрипка для него. https://jsfiddle.net/mohit7189/p4ow1h7f/12/ – Mohit7189

+0

Я не смог воспроизвести сценарий, где Я получил брандмау ge, даже когда были выбраны действительные значения. Не могли бы вы рассказать мне, какие значения вы выбрали из раскрывающегося списка, которое вызывает ненужное предупреждение? – DinoMyte

+0

Фактически это было предупреждающее сообщение, которое я нажимаю в промежутке, независимо от того, какие условия являются мезажем, все еще приходят в каждом случае – Mohit7189