Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.08.2015, 16:56
Интересующийся
Отправить личное сообщение для oneplus Посмотреть профиль Найти все сообщения от oneplus
 
Регистрация: 25.05.2015
Сообщений: 24

Двойной динамический список.
Доброго дня, друзья!
Ситуация такая:
Есть три списка:
- Материал (ткань, бриз, алюминий, пластик) - независимый,
- Выборка (весь список, хиты продаж, эконом, премиум) - независимый,
- Фактура (большой список моделей) - зависит от материала и выборки.
Принцип действия таков, выбираем материал, в соответствии с материалом выпадет нужный список моделей фактуры, но поскольку список большой мне необходимо сделать еще выборку по выпадающему списку (хиты, эконом и т.д.).
Изначально предполагал, что в value сделаю три значения:
vp1 - переменная стоимости,
econ - эконом класс,
art - артикул, к которому позже привяжу картинки.
var v=tex.options[tex.selectedIndex].value,
      m=mat.options[mat.selectedIndex].value,
      va=new Array();
  s=v.substr(0,2);
  va=v.split(",");
  a=(va[0]);
  b=(va[1]);
  c=(va[2]);
  //"s"-переменная списка, "a"-прайс класс, "b"-выборка, "c"-артикул

Значение econ привяжу к выборке.
е могу привязать, потому что здесь речь уже о выбранном оптионе, а мне их нужно раскидать.
В class вынес список по материалу (vt, vb, va, vp).
В итоге голова дымится, но ничего работающего не получилось.
Что сделал:
<body>
<table width="600" align="center">
<colgroup><col width="210"><col width="390"></colgroup>
<tbody>
<form name="vl_form">
<tr><td class="left">Материал:</td>
    <td><select id="vl_mat_id" name="vl_mat">
    <option class="vt" selected="selected">ткань</option>
    <option class="vb">бриз</option>
    <option class="va">алюминий</option>
    <option class="vp">пластик</option>
    </select></td></tr>
<tr><td align="left">Фактура:</td>
<td><select id="vl_sort_id" name="vl_sort">
    <option selected="selected">весь список</option>
    <option>хиты продаж</option>
    <option>премиум</option>
    <option>эконом</option>
</select></td></tr>
<tr><td></td>
    <td><select id="vl_tex_id" name="vl_tex">
    <option selected="selected" value="vt1, econ, art">Алжир</option>
    <option class="vt" value="vt1, econ, art">Стандарт</option>
    <option class="vt" value="vt2, econ, art">Рибкорд</option>
    <option class="vb" value="vb1, hit, art">Парсифаль</option>
    <option class="va" value="va1, hit, art">Сканди</option>
    <option class="vp" value="vp1, hit, art">Аквамарин</option>
    <option class="vp" value="vp2, hit, art">Лоэнгрин</option>
    <option class="vp" value="vp3, prem, art">Фрост</option>
    </select></td></tr>
</form>
</tbody>
</body>

var mat=document.getElementById("vl_mat_id"),
    sor=document.getElementById("vl_sort_id"),
    tex=document.getElementById("vl_tex_id"),
    tex_c=tex.cloneNode(true),
    tex_co=tex_c.getElementsByTagName("option");
function f() {
  var m=mat.options[mat.selectedIndex].className;
  while (tex.options.length) {tex.remove(0)};
  for (var i=0; i<tex_co.length;i++) {
  if (tex_co[i].className.match(m)) {tex.appendChild(tex_co[i].cloneNode(true))}
  }
}
mat.onchange=f;

Привязка здесь по классу, но как сделать, что бы привязывалось по переменным и сделать двойной динамический список.

Прошу помощи, куда двигаться, возможно задачу решаю вовсе не тем способом, в яваскриптах далеко не профи.
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2015, 17:29
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 458

oneplus, уникальные значения, как я понял это артикул, в value, а всё остальное в class (классы материалов, классы фактур)
Ответить с цитированием
  #3 (permalink)  
Старый 14.08.2015, 17:37
Интересующийся
Отправить личное сообщение для oneplus Посмотреть профиль Найти все сообщения от oneplus
 
Регистрация: 25.05.2015
Сообщений: 24

Можно ли сделать несколько классов? Или подклассы?
Ответить с цитированием
  #4 (permalink)  
Старый 14.08.2015, 17:43
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 458

oneplus, можно class="premium metal"
Ответить с цитированием
  #5 (permalink)  
Старый 14.08.2015, 17:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

oneplus,
нужно вырастить дерево зависимостей (обьект) и при переходе по веткам формировать селекты --- так же есть куча готовых решений и здесь и в космосе -- искать зависимые селекты плагин
Ответить с цитированием
  #6 (permalink)  
Старый 14.08.2015, 17:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

oneplus, этого плагина вам должно хватить
http://www.appelsiini.net/projects/chained
Ответить с цитированием
  #7 (permalink)  
Старый 14.08.2015, 17:58
Интересующийся
Отправить личное сообщение для oneplus Посмотреть профиль Найти все сообщения от oneplus
 
Регистрация: 25.05.2015
Сообщений: 24

Сообщение от Rise Посмотреть сообщение
oneplus, можно class="premium metal"
простите, сейчас нет возможности проэксперементировать, поэтому спрошу:
то есть я могу задать в классе сразу два класса? например class="premium metal" и при необходимости использовать:
if (tex_co[i].className.match("premium")){tex.appendChild(tex_c o[i].cloneNode(true))}
или
if (tex_co[i].className.match("metall")) {tex.appendChild(tex_co[i].cloneNode(true))}
я правильно понимаю?
Ответить с цитированием
  #8 (permalink)  
Старый 14.08.2015, 18:04
Интересующийся
Отправить личное сообщение для oneplus Посмотреть профиль Найти все сообщения от oneplus
 
Регистрация: 25.05.2015
Сообщений: 24

Сообщение от рони Посмотреть сообщение
oneplus, этого плагина вам должно хватить
http://www.appelsiini.net/projects/chained
Большое спасибо, попробую разобраться. Так понимаю это уже будет jQuery? Просто я с ней ранее не знаком.

Можно ли мою задачу выполнить на просто яваскрипте? И целесообразно ли это будет, заморачиваться только яваскриптом без плагинов?
Ответить с цитированием
  #9 (permalink)  
Старый 14.08.2015, 19:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

oneplus,
можно на js если построите дерево.
Ответить с цитированием
  #10 (permalink)  
Старый 14.08.2015, 19:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от oneplus
я могу задать в классе сразу два класса?
да хоть десять
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простой динамический список vasiliy_shkolniy Элементы интерфейса 34 05.07.2013 09:10
Динамический список элементов формы lar_i_sa Общие вопросы Javascript 0 08.03.2013 15:27
селект переделанный под список Vasёk18 Элементы интерфейса 0 13.04.2012 23:49
Динамический список djsadd Internet Explorer 1 13.04.2012 01:35
Динамический список из DIV`ов и INPUT`ов Andrew_li jQuery 5 09.06.2011 15:23