Фильтр товаров

ice-den

Новичок
Подскажите пожалуйста. Как вывести фильтр выпадающим списком. Чтобы можно было в списке выбрать производителя и сразу отфильтровались нужные производители. Как в сортировке. Создал список, всё нормально, но вот не фильтрует. Буду при много благодарен.

Код фильтра:
PHP:
<div class="box">
 
  <div class="box-content">
    <ul class="box-filter">
      <?php foreach ($filter_groups as $filter_group) { ?>
      <li><span id="filter-group<?php echo $filter_group['filter_group_id']; ?>"><?php echo $filter_group['name']; ?></span>
        <ul>
          <?php foreach ($filter_group['filter'] as $filter) { ?>
          <?php if (in_array($filter['filter_id'], $filter_category)) { ?>
          <li>
            <input type="checkbox" value="<?php echo $filter['filter_id']; ?>" id="filter<?php echo $filter['filter_id']; ?>" checked="checked" />
            <label for="filter<?php echo $filter['filter_id']; ?>"><?php echo $filter['name']; ?></label>
          </li>
          <?php } else { ?>
          <li>
            <input type="checkbox" value="<?php echo $filter['filter_id']; ?>" id="filter<?php echo $filter['filter_id']; ?>" />
            <label for="filter<?php echo $filter['filter_id']; ?>"><?php echo $filter['name']; ?></label>
          </li>
          <?php } ?>
          <?php } ?>
        </ul>
      </li>
      <?php } ?>
    </ul>
    <a id="button-filter" class="button"><?php echo $button_filter; ?></a>
  </div>
</div>
<script type="text/javascript"><!--
$('#button-filter').bind('click', function() {
  filter = [];
 
  $('.box-filter input[type=\'checkbox\']:checked').each(function(element) {
      filter.push(this.value);
  });
 
  location = '<?php echo $action; ?>&filter=' + filter.join(',');
});
//--></script>
А вот, что я сделал:
PHP:
<div class="box">
 
  <div class="box-content">
    <ul class="box-filter">
      <?php foreach ($filter_groups as $filter_group) { ?>
      <li><span id="filter-group<?php echo $filter_group['filter_group_id']; ?>"><?php echo $filter_group['name']; ?></span>
     
          <select onchange="location = this.value;">
          <?php foreach ($filter_group['filter'] as $filter) { ?>
          <?php if (in_array($filter['filter_id'], $filter_category)) { ?>
       
            <option type="checkbox" value="<?php echo $filter['filter_id']; ?>" id="filter<?php echo $filter['filter_id']; ?>" checked="checked" />
            <label for="filter<?php echo $filter['filter_id']; ?>"><?php echo $filter['name']; ?></label></option>
       
          <?php } else { ?>
          <option type="checkbox" value="<?php echo $filter['filter_id']; ?>" id="filter<?php echo $filter['filter_id']; ?>" />
            <label for="filter<?php echo $filter['filter_id']; ?>"><?php echo $filter['name']; ?></label></option>
       
          <?php } ?>
          <?php } ?>
       
      </li>
      <?php } ?>
    </ul>
    <a id="button-filter" class="button"><?php echo $button_filter; ?></a>
  </div>
</div>
<script type="text/javascript"><!--
$('#button-filter').bind('click', function() {
  filter = [];
 
  $('.box-filter input[type=\'checkbox\']:checked').each(function(element) {
      filter.push(this.value);
  });
 
  location = '<?php echo $action; ?>&filter=' + filter.join(',');
});
//--></script>
 

riff

Новичок
<select onchange="location = this.value;">
<option type="checkbox"
<label for="filter
Орррииигинально. Сам придумал?
Выстави для <div> "position: absolute; display: none;", а при клике на ссылку показывай его: "display: block;". Вот тебе и выпадающий список.
 

ice-den

Новичок
Орррииигинально. Сам придумал?
Выстави для <div> "position: absolute; display: none;", а при клике на ссылку показывай его: "display: block;". Вот тебе и выпадающий список.
Дело в том, что список я сделал, но не переходит сразу на пункт, который я выбрал из списка. Только при нажатии на кнопку Фильтровать. А нужно сразу, чтобы я выбрал и сразу перешло.
 

riff

Новичок
Т.е. это у тебя какой-то не стандартный <select> ? (Тогда пардон, не догадался.)
И этот кастомный подменяет собой стандартный? Тогда onchange у <select> тебе не поможет. Ты должен найти в документации, к своему нестандартному select, событие, срабатывающее при изменении значения.
 
Последнее редактирование:
Сверху