#javascript #html #jquery #html_select #фильтры
Есть 2 выпадающих меню: в первом - выводится марка автомобиля, а во втором, -к каждой марке во вложенности дерева с глубиной data-sf-depth="1"? - ее модели. Как сделать списки связанными, чтобы при выборе каждой марки появлялись только ее модели? У меня пока получилось сделать так, что при выборе марки выводятся только модели (но все, а не конкретно ее!), либо не выводится ни одна модель. window.addEventListener("DOMContentLoaded", function() { var select1 = document.getElementsByClassName("sf-field-taxonomy-ad_cat")[0].getElementsByClassName("sf-input-select")[0], select2 = document.getElementsByClassName("sf-field-taxonomy-ad_cat")[1].getElementsByClassName("sf-input-select")[0], opt = [].slice.call(select1.options, 0), opt2 = [].slice.call(select2.options, 0); var value; select1.onchange = function() { opt.forEach(function(option, i) { if (option.selected) { value = option.value; return false; } }); opt2.forEach(function(option, i) { var parent = option.parentNode; if (option.classList.contains("sf-level-1") || !i) { select2.appendChild(option); } else { if (parent) { parent.removeChild(option); } } }); } });
Ответы
Ответ 1
Я бы немного изменил логику: не стал бы в select с моделями дублировать марки, оставил бы там только модели и сделал бы этот select недоступным для выбора, пока не выбрана марка. Связал бы я два select'а следующим образом: моделям задал бы класс, который соответствует value марки. $('.cars').change(function(){ $('.models').prop('selectedIndex', 0); //ощищаем select с моделями при каждом изменении select'а с марками var car = $(this).val(); //получаем value выбранной марки if(car != '') { //проверяем, выбрана ли хоть какая-то марка $('.models').attr('disabled',false); //открываем select с моделями $('.models option').css('display','none'); //сначала скрываем все модели $('.models option.'+car).css('display','inline'); //затем открываем те, которые нам нужны } else { $('.models').attr('disabled',true); //если не выбрана ни одна марка, скрываем select с моделями } });
Комментариев нет:
Отправить комментарий