it_proger29
@it_proger29
Битрикс

Из-за чего тут ошибка с фильтрацией по цене?

Здравствуйте, есть 2 инпута и кнопка.
При вводе минимальной цены, то что ниже должно быть скрыто. Аналогично с максимальной, только скрывается то что выше
<input style="border: 1px solid silver;border-radius: 5px;" class="uk-input price_min" id="form-horizontal-text" type="text" placeholder="От">
<input style="border: 1px solid silver;border-radius: 5px;" class="uk-input price_max" id="form-horizontal-text" type="text" placeholder="До">
<button class="uk-button uk-button-danger uk-width-1-1 price_min_max_btn">Применить</button>

Есть такой код, но он фильтрует криво.
Цена товара в блоке с товаром, находится в атрибуте data-price
Класс товара item_block_filter
$('.price_min_max_btn').click(function() {
                    min_price = $('.price_min').val();
                        $('.item_block_filter').each(function() {
                            if ( $(this).attr("data-price") <= min_price ) {
						        console.log(this);
						        console.log(min_price);
						        $(this).hide();
                            }
                        });
                    max_price = $('.price_max').val();
                        $('.item_block_filter').each(function() {
                            if ( $(this).attr("data-price") >= max_price ) {
						        console.log(this);
						        console.log(max_price);
						        $(this).hide();
                            }
                        });
				});


Помогите пожалуйста разобраться с кодом
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Сравниваете строки вместо чисел. Скрываете элементы, но не показываете их.

$('.price_min_max_btn').click(function() {
  const min = +$('.price_min').val() || 0;
  const max = +$('.price_max').val() || Infinity;

  $('.item_block_filter')
    .hide()
    .filter(function() {
      const price = +this.dataset.price;
      return min <= price && price <= max;
    })
    .show();
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы