Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.06.2017, 08:40
Кандидат Javascript-наук
Отправить личное сообщение для biryukovm Посмотреть профиль Найти все сообщения от biryukovm
 
Регистрация: 13.12.2013
Сообщений: 110

Создать группы на основе одного select
Привет всем.

Ищу помощи в непростом решении.
А точнее вот:
У меня есть компонент в джумле jbzoo и там есть список категории товара.
И получается что я не могу раздробить на доп селекторы

Подскажите как можноимея этот селект его раздробить ?

Ниже я указал весь код что есть вообще наэто странице , движок Joomla




<select id="elements_itemcategoryvalue" name="elements[_itemcategory][value][]" title="Категория" size="15" data-widgetid="2">
	<option value="49">&nbsp;&nbsp;-&nbsp;Главная</option>
	<option value="48">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Прочее</option>
	<option value="13">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Оборудование</option>
	<option value="12">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Объекты</option>
	<option value="47">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Земельный участок</option>
	<option value="46">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Другой объект</option>
	<option value="45">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Нефтебаза</option>
	<option value="44">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;АЗС</option>
	<option value="11">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Услуги</option>
	<option value="43">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Поставка оборудования</option>
	<option value="42">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;IT услуги</option>
	<option value="41">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Услуги по сопровождению (охрана) товара ВЖДО (военезированная железнодорожная охрана)</option>
	<option value="40">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Аудиторские услуги</option>
	<option value="39">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Трейнинговые услуги</option>
	<option value="38">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Банковские услуги (Банки РК овердрафт, кредиты, гарантии, микрокредиты)</option>
	<option value="37">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Юридические услуги (Юристы, адвокаты)</option>
	<option value="36">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Бухгалтерские услуги</option>
	<option value="35">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Техническое обслуживание (оборудование, программное обеспечение)</option>
	<option value="34">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Услуги по хранению (нефтебазы)</option>
	<option value="33">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Брокерские услуги</option>
	<option value="32">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Транспортные услуги (Вагоны, бензовозы, мазутовозы, нефтевозы, аренда транспорта)</option>
	<option value="31">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Услуги по переработке нефти и нефтепродуктов. (Заводы, мини заводы)</option>
	<option value="10">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Cклад и вагонная поставка</option>
	<option value="30">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Судовое топливо</option>
	<option value="29">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Другое</option>
	<option value="28">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;АЗС</option>
	<option value="27">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Нефтехимия</option>
	<option value="26">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Талоны/Карты</option>
	<option value="25">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Присадки</option>
	<option value="24">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Масла</option>
	<option value="23">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Газ</option>
	<option value="22">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Газойл</option>
	<option value="21">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;СНО</option>
	<option value="20">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Битум</option>
	<option value="19">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Печное топливо</option>
	<option value="18">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Мазут</option>
	<option value="17">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Керосин</option>
	<option value="16">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Дизельное топливо</option>
	<option value="15">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Нефть</option>
	<option value="14">&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;-&nbsp;Бензин</option>
</select>


<script type="text/javascript">
	jQuery(function($) {
		var categories_elem = $('#elements_itemcategoryvalue'), primary_elem = $('#elements_itemcategoryprimary');
		if (!categories_elem || !primary_elem) return;

		categories_elem.bind('change', function() {
			var categories = $(this).val() ? $(this).val() : [],
                primary    = primary_elem.val();
                
			
            if ($.inArray(primary, categories) == -1) {
                
                if (Array.isArray(categories)) {
                    var catValue = categories.length ? categories.shift() : '';
                } else {
                    var catValue = categories;
                }
                
                primary_elem.val();
            }
            
		});

		primary_elem.bind('change', function() {
			var categories = categories_elem.val() ? categories_elem.val() : [], primary = $(this).val();
			if ($.inArray(primary, categories) == -1) {
				categories.push(primary);
				categories_elem.val(categories);
			}
		});
	});
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 28.06.2017, 10:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

И что подразумевается под "раздробить"?
Ответить с цитированием
  #3 (permalink)  
Старый 28.06.2017, 10:53
Кандидат Javascript-наук
Отправить личное сообщение для biryukovm Посмотреть профиль Найти все сообщения от biryukovm
 
Регистрация: 13.12.2013
Сообщений: 110

Сообщение от laimas Посмотреть сообщение
И что подразумевается под "раздробить"?
1 - мы получаем список с селект (в момент загрезки страницы) и загоняем в памят под вид JSON после тресем по мере надобности
Если обратили внимание то там все стоит по структуре дерева http://dl3.joxi.net/drive/2017/06/28...b62e30e3c3.png

И определяем что отображать
предположим 1 ступень это
1.Прочее
2.Оборудование
3.Обьекты
4.Услуги

У каждой ступени есть свой список котегорий
Ну так вот эти ступени надо разместить в первый селект
Пос когда мы Выбрали что должно быть в 1 ступени у нас появится дополнительный селект где уже будут отображены категории этой ступени

И т.д по структуре дерева

PS. первая ступень может передаться через URL и тогда должно отобразиться селект ступени 1 и селект категорий
Ответить с цитированием
  #4 (permalink)  
Старый 28.06.2017, 11:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

biryukovm,
не занимайтесь ерундой, это делать нужно на стороне сервера (получение дерева), по которому и строить списки. Вообще в данном случае это должны быть связанные списки.
Ответить с цитированием
  #5 (permalink)  
Старый 28.06.2017, 11:27
Кандидат Javascript-наук
Отправить личное сообщение для biryukovm Посмотреть профиль Найти все сообщения от biryukovm
 
Регистрация: 13.12.2013
Сообщений: 110

Сообщение от laimas Посмотреть сообщение
И что подразумевается под "раздробить"?
Сообщение от laimas Посмотреть сообщение
biryukovm,
не занимайтесь ерундой, это делать нужно на стороне сервера (получение дерева), по которому и строить списки. Вообще в данном случае это должны быть связанные списки.
Можно было бы и с помощью Ajax сделать тоже можно было , но компонент не дает!
Сам компонент не даст так раскурочить код и надо придумывать велосепед с тем что имею понимаю что какаята ерунда но надо как то решать её
Ответить с цитированием
  #6 (permalink)  
Старый 28.06.2017, 11:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от biryukovm
Сам компонент не даст так раскурочить код
Это с чего вдруг? Для того чтобы это выполнить, нужно соответствующий запрос к базе сделать. Джумла CMS не закрытая, изменить код не сложно, тем более у компонента.

Говоря о дереве, имеют ввиду не ступени, а уровни вложения дерева. Обратите внимание на то, что значения всех опций списка (идентификаторы категорий) уникальны. То есть запрос этого списка выберет нужное, а значит и серверный сценарий оперирует одним параметром.

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

Ну допустим вы получили не один, а несколько списков. Значит и параметров запроса будут несколько и значит уже придется менять серверный код. Либо вы все таки хотите иметь связанные списки и параметром запроса будут являться значение только последнего списка.

Какова цель получения списков?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать Json объект на основе разметки Scantraxx Общие вопросы Javascript 18 12.12.2016 17:06
Создать список select coool7819 Общие вопросы Javascript 6 17.07.2015 10:21
Проверка нескольких select на одинаковые значения emulexx Общие вопросы Javascript 6 07.04.2015 15:19
как создать в цикле несколько дочерних элементов одного уровня? DimonCry Общие вопросы Javascript 11 13.01.2011 10:46
Помогите создать тройное select меню JuriySOFT Элементы интерфейса 12 14.06.2010 14:33