Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.11.2017, 22:37
Аватар для Some Way
Интересующийся
Отправить личное сообщение для Some Way Посмотреть профиль Найти все сообщения от Some Way
 
Регистрация: 30.11.2017
Сообщений: 17

jQuery range slider + carousel price
Здравствуйте !

Заранее прошу прощения, за свои познания, по этому и решил обратиться за помощью к вам.

Я, только начал изучение библиотеки а мне дали задание, весьма сложное для начинающего...
Нужно создать range slider с каруселью изображений товаров, и привязать ползунок к ценам, что бы в диапазоне от 50 до 500 при движение ползунка появлялись соответственные товары отсортированные в зависимости от выбранного диапазона цен.

Единственное что пока получилось так это сам ползунок
<script>

	jQuery(function(){

		jQuery("#range").ionRangeSlider({
			type: "double",
		    grid: true,
		    min: 0,
		    max: 500,
		    from: 200,
		    to: 300,
		    step: 100
		});
	});	

		
</script>

Понимаю, что можно сделать так, при выборе диапазона с текстом цены от 50 до 150, будут видны только элементы у которых цена соответствует этим значениям, но как это сделать, уже ломаю голову не первый день
Проблема именно в том, что я только начал изучать javascript и попросту знаю всего ничего.

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

Изображение собственно по ссылке.
http://joxi.ru/Q2KLba5f4e1qLA.jpg

Последний раз редактировалось Some Way, 01.12.2017 в 16:26.
Ответить с цитированием
  #2 (permalink)  
Старый 30.11.2017, 22:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от Some Way
carousel
на чём сделана?
Ответить с цитированием
  #3 (permalink)  
Старый 01.12.2017, 00:52
Аватар для void()
Профессор
Отправить личное сообщение для void() Посмотреть профиль Найти все сообщения от void()
 
Регистрация: 11.08.2017
Сообщений: 208

Вот пример. У вас скрипт отдает две переменные from и to (диапазон). Его надо отправлять на сервер через AJAX и получать товары, а затем вставлять в слайдер. Так? А если товары типа уже загружены, то перебирать их в цикле и проверять, что если их цена больше from и меньше to, тогда их выводить в слайдер.
Строка 42.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>test</title>
    <link rel="stylesheet" href="css/normalize.css">
    <link rel="stylesheet" href="css/ion.rangeSlider.css">
    <link rel="stylesheet" href="css/ion.rangeSlider.skinFlat.css">
    <script src="js/jquery-1.12.3.min.js"></script>
    <script src="js/ion.rangeSlider.js"></script>
</head>
<body>

    <div style="position: relative; padding: 200px;">
        <div>
            <input type="text" id="range" value="" name="range" />
        </div>
    </div>

    <script>
        $(function () {
            var $range = $("#range");

            $range.ionRangeSlider({
                hide_min_max: true,
                keyboard: true,
                min: 50,
                max: 500,
                from: 100,
                to: 300,
                type: 'double',
                step: 1,
                prefix: "$",
                grid: true
            });

            $range.on("change", function () {
                var $this = $(this),
                from = $this.data("from"),
                to = $this.data("to");

               /* И здесь нужно сформировать AJAX запрос на сервер. */

           });
        });

    </script>

</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 01.12.2017, 16:14
Аватар для Some Way
Интересующийся
Отправить личное сообщение для Some Way Посмотреть профиль Найти все сообщения от Some Way
 
Регистрация: 30.11.2017
Сообщений: 17

Сообщение от рони
на чём сделана?
Использую для создания slickslider

Сообщение от void()
Вот пример. У вас скрипт отдает две переменные from и to (диапазон). Его надо отправлять на сервер через AJAX и получать товары, а затем вставлять в слайдер. Так? А если товары типа уже загружены, то перебирать их в цикле и проверять, что если их цена больше from и меньше to, тогда их выводить в слайдер.
Есть карусель, в ней-итэмы текстового блока в котором находится изображение и текст, нужно сделать так что бы при выборе от from к to на ползунке, в карусели отображались только те текстовые блоки с изображениями у которых цена(текст "EUR от min50 к max500") соответствует выбранному диапазону на ползунке.
Наверное это вы и имели в виду ?
Картинки хранятся в медиатеке сайта wordpress.
<div class="slick-slide slick-current slick-active" >
<span class="content-section">		  	
<img class="alignnone size-full wp-image-254" src="/wp-content/uploads/galery-9.png">
<p>185×210</p>
<h5>ORIGINAL LARGE Abstract Painting</h5>
<h6>EUR 400</h6>
<br>
</span>
</div>

Последний раз редактировалось Some Way, 01.12.2017 в 17:28.
Ответить с цитированием
  #5 (permalink)  
Старый 01.12.2017, 17:06
Аватар для void()
Профессор
Отправить личное сообщение для void() Посмотреть профиль Найти все сообщения от void()
 
Регистрация: 11.08.2017
Сообщений: 208

OMG, здесь еще и bootstrap

Some Way,
Это не важно, что у вас карусель. Загвоздка в том, что нужно получить как-то карточки товара. Схема примерно такая:

1. Создаем файл php, что-то вроде shopCard.php. Закрываем его от индексации. В нем пишем:
<?php echo ... и отдаем готовый HTML клиенту здесь.


2. К тому коду, который я привел выше, добавляем на 42 строке аякс запрос к php. Что-то вроде этого:

function ajaxGet(){
var request = new XMLHttpRequest();
request.onreadystatechange = function(){
if(request.readyState == 4 && request.status == 200){
OVL.CARUSEL.innerHTML = request.response;
}
}
request.open('GET', 'shopCard.php');
request.send(from, to);
}


Передаем на сервер в параметрах from и to. А в php уже получаем from и to и отбираем картинки, тесты-описания, цену и т.д. и возвращаем готовый HTML. И вставляем его в карусель легким движением руки).

Это просто схема. Попробуйте для начала просто достучаться до сервера, передать ему параметры и получить хоть какой-то ответ. Затем ответ вставьте в карусель. После этого уже можно лучше проработать php. Откуда брать тексты и цены? Где-то в базе лежит, но где? И какова структура у картинок?

Или это я чет не понимаю?)

P.S. Потом еще нужно будет продумать, как не слать много запросов на сервер, нужно сделать задержку (таймаут) после события изменения бегунка. Иначе будет не очень круто, на каждое микродвижение бегунка будут идти запросы. Другой вариант - отсылать по нажатию на кнопку, после того как будет задан диапазон.

Последний раз редактировалось void(), 01.12.2017 в 17:10.
Ответить с цитированием
  #6 (permalink)  
Старый 01.12.2017, 17:35
Аватар для Some Way
Интересующийся
Отправить личное сообщение для Some Way Посмотреть профиль Найти все сообщения от Some Way
 
Регистрация: 30.11.2017
Сообщений: 17

Сообщение от void()
OMG, здесь еще и bootstrap
Большое человеческое спасибо вам за ваш труд, пока слабо понимаю что к чему, но буду пробовать, по другому никак.
Мне казалось, что можно как-то намного проще прикрутить ползунок к слайдеру изображений и отображать контент в соответствии с диапазоном.
Ответить с цитированием
  #7 (permalink)  
Старый 01.12.2017, 18:23
Аватар для void()
Профессор
Отправить личное сообщение для void() Посмотреть профиль Найти все сообщения от void()
 
Регистрация: 11.08.2017
Сообщений: 208

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

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Пример</title>
</head>
<body>

	<div class="owl-carousel"></div>
	<button onclick="sort();">Отсортировать</button>
	<script>

		/* Описываем здесь свои данные (например, ссылки на картинки по ключу цены) */
		var imges = {
			50: ['imges1', 'imges2', 'imges3','imges4'],
			100: ['imges5', 'imges6', 'imges7','imges8'],
			250: ['imges9', 'imges10', 'imges11','imges12']
		};

// Получаем owl-carousel в переменную
var carous = document.querySelector('.owl-carousel');

/* Это переменные, которые генерирует бегуток - значения ОТ и ДО */
var iFrom = 50;
var iTo = 250;

/* Перебераем данные и выводим в карусель только те, которые соответствуют требованиям from-to */
function sort(){
	for(var key in imges){
		if(key > iFrom && key < iTo){
			for(var k = 0; k < imges[key].length; k++){
				carous.innerHTML += '<img src="' + imges[key][k] + '">';
			}
		}
	}
}
</script>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 01.12.2017, 18:52
Аватар для Some Way
Интересующийся
Отправить личное сообщение для Some Way Посмотреть профиль Найти все сообщения от Some Way
 
Регистрация: 30.11.2017
Сообщений: 17

Сообщение от void()
Вот самый простой пример, который я смог придумать. Но он не подходит для боевого проекта. Если только для себя или в учебных целях.
Спасибо вам огромное, буду пробовать, почему для проекта не сгодится ?
Ответить с цитированием
  #9 (permalink)  
Старый 01.12.2017, 19:06
Аватар для void()
Профессор
Отправить личное сообщение для void() Посмотреть профиль Найти все сообщения от void()
 
Регистрация: 11.08.2017
Сообщений: 208

Some Way,
В основном потому, что данные (картинки и цены) прописаны в JS. Строки 13-18. А это значит, что когда в магазин нужно будет добавить новые товары или удалить какие-то из них, то придется изменять вручную и этот JS. То есть не получится так, что добавил товар через админку или изменил цену и все работает, придется еще тут правки вносить.
Ответить с цитированием
  #10 (permalink)  
Старый 02.12.2017, 18:02
Аватар для Some Way
Интересующийся
Отправить личное сообщение для Some Way Посмотреть профиль Найти все сообщения от Some Way
 
Регистрация: 30.11.2017
Сообщений: 17

Сообщение от void()
То есть не получится так, что добавил товар через админку или изменил цену и все работает, придется еще тут правки вносить.
А если скрывать весь span c class="content-section" в котором есть class="mid" и уже потом привязать значения ползунка к классам.

Примерно с таким кодом моя карусель показывает слайды
<div class="slick-track">
	<div calss="slick-slide">
		<span class="content-section">
			<p><img src="izobrajenie"></p>
			<p>text small</p>
			<h5>LARGE text</h5>
			<h6><span class="mid">EUR 300</span></h6>
		</span>
	</div>
</div>

Но в таком случае придется редактировать не сам JS а слайд (добавлять тексту спан с классом цены например: low,mid,high), верно ?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery UI Slider - привязка с input type number Argeares Элементы интерфейса 3 20.06.2017 15:36
Как передать value из change jquery в range jquery? drkrol jQuery 13 08.09.2015 22:36
Нужно связать input и ползунок jQuery Slider / jQuery ui IffeR jQuery 4 16.08.2014 18:01
jQuery UI Range slider как заблокировать левый ползунок по первому клику Oleg_Pupkin jQuery 3 04.09.2013 13:44
jQuery range slider Turner jQuery 0 15.03.2011 11:51