Скрыть определенный <option> в <select> если в другом <select> выбран <option>
Подскажите, пожалуйста, есть два <select> , нужно сделать так, чтобы если в первом был выбран определенный то в другом <select> скрывались определенные <option>. Пока у меня работает так, но проблема в том, что он не сбрасывает, то есть если я выберу другой вариант, то они не активируются
var type_id = document.getElementById("sel");
type_id.onchange = function() {
if (type_id.options[type_id.selectedIndex].value == 'A') {
var sel = document.getElementById('sel1');
sel.options[5].setAttribute('disabled', true);
sel.options[6].setAttribute('disabled', true);
sel.options[7].setAttribute('disabled', true);
sel.options[8].setAttribute('disabled', true);
sel.options[9].setAttribute('disabled', true);
}
if (type_id.options[type_id.selectedIndex].value == 'B') {
var sel = document.getElementById('sel1');
sel.options[1].setAttribute('disabled', true);
sel.options[2].setAttribute('disabled', true);
sel.options[3].setAttribute('disabled', true);
sel.options[4].setAttribute('disabled', true);
sel.options[8].setAttribute('disabled', true);
sel.options[9].setAttribute('disabled', true);
sel.options[5].setAttribute('enable', true);
sel.options[6].setAttribute('enable', true);
sel.options[7].setAttribute('enable', true);
}
};
<div class="form-group">
<select class="input-md form-control" id="sel" name="sel">
<option>Выберите количество цилиндров</option>
<option value="A">4 цилиндра</option>
<option value="B">6 цилиндров</option>
<option value="C">8 цилиндров</option>
<option>ГАЗель</option>
</select>
</div>
<div class="form-group">
<select class="input-md form-control" id="sel1" name="sel1">
<option>Выберите оборудование</option>
<!--4 цилиндра-->
<option value="13000">OMVL SAVER-4 (Италия) - Лидер продаж в РФ</option>
<option value="11700">Digitronic – (Польша)</option>
<option value="7000">Atiker (Турция) – бюджетный комплект оборудования</option>
<option value="12400">BRC- (Италия), Оборудование премиум класса)</option>
<!--end 4 цилиндра-->
<!--6 цилиндра-->
<option value="17500">OMVL -6 (Италия), Лидер продаж в РФ</option>
<option value="20800">OMVL -6 OBD (Италия) , Премиум линейка</option>
<option value="28400">BRC- (Италия), Оборудование премиум класса</option>
<!--8 цилиндра-->
<option value="23000">OMVL -8 OBD (Италия) - Премиум линейка</option>
<option value="33600">BRC- (Италия), Оборудование премиум класса</option>
</select>
</div>
|
зависимые селекты
MrRobit,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<div class="form-group">
<select class="input-md form-control" id="sel" name="sel">
<option>Выберите количество цилиндров</option>
<option value="A">4 цилиндра</option>
<option value="B">6 цилиндров</option>
<option value="C">8 цилиндров</option>
<option>ГАЗель</option>
</select>
</div>
<div class="form-group">
<select class="input-md form-control" id="sel1" name="sel1">
<option>Выберите оборудование</option>
<!--4 цилиндра-->
<option value="13000">OMVL SAVER-4 (Италия) - Лидер продаж в РФ</option>
<option value="11700">Digitronic – (Польша)</option>
<option value="7000">Atiker (Турция) – бюджетный комплект оборудования</option>
<option value="12400">BRC- (Италия), Оборудование премиум класса)</option>
<!--end 4 цилиндра-->
<!--6 цилиндра-->
<option value="17500">OMVL -6 (Италия), Лидер продаж в РФ</option>
<option value="20800">OMVL -6 OBD (Италия) , Премиум линейка</option>
<option value="28400">BRC- (Италия), Оборудование премиум класса</option>
<!--8 цилиндра-->
<option value="23000">OMVL -8 OBD (Италия) - Премиум линейка</option>
<option value="33600">BRC- (Италия), Оборудование премиум класса</option>
</select>
</div>
<script>
document.getElementById("sel").addEventListener("change", function() {
var sel = document.getElementById('sel1');
var options = [...sel.options];
options.forEach(elem => elem.removeAttribute("disabled"))
if(this.value == "A") [5,6,7,8,9].forEach(num => options[num].setAttribute("disabled", true))
if(this.value == "B") [0,1,2,3,8,9].forEach(num => options[num].setAttribute("disabled", true))
if(this.value == "C") [0,1,2,3,4,5,6,7].forEach(num => options[num].setAttribute("disabled", true))
});
</script>
</body>
</html>
|
Цитата:
var obj={
"A": [5,6,7,8,9],
"B": [0,1,2,3,8,9],
"C": [0,1,2,3,4,5,6,7]
};
if(obj[this.value]) obj[this.value].forEach(num => options[num].setAttribute("disabled", true))
|
Проще тогда разбить список на группы, опции которых и делать недоступными.
|
Цитата:
|
Цитата:
<select class="input-md form-control" id="sel" name="sel">
<option>Выберите количество цилиндров</option>
<option value="A">4 цилиндра</option>
<option value="B">6 цилиндров</option>
<option value="C">8 цилиндров</option>
<option>ГАЗель</option>
</select>
<select class="input-md form-control" id="sel1" name="sel1">
<option>Выберите оборудование</option>
<optgroup label="4 цилиндра" id="A" disabled="">
<option value="13000">OMVL SAVER-4 (Италия) - Лидер продаж в РФ</option>
<option value="11700">Digitronic – (Польша)</option>
<option value="7000">Atiker (Турция) – бюджетный комплект оборудования</option>
<option value="12400">BRC- (Италия), Оборудование премиум класса)</option>
</optgroup>
<optgroup label="6 цилиндров" id="B" disabled="">
<option value="17500">OMVL -6 (Италия), Лидер продаж в РФ</option>
<option value="20800">OMVL -6 OBD (Италия) , Премиум линейка</option>
<option value="28400">BRC- (Италия), Оборудование премиум класса</option>
</optgroup>
<optgroup label="8 цилиндров" id="C" disabled="">
<option value="23000">OMVL -8 OBD (Италия) - Премиум линейка</option>
<option value="33600">BRC- (Италия), Оборудование премиум класса</option>
</optgroup>
</select>
<script>
document.getElementById("sel").addEventListener("change", function() {
var v = this.value, o = document.querySelector('#sel1');
o.options[0].selected = true;
o.querySelectorAll('optgroup').forEach(function(e) {
e.disabled = !(e.id == v)
})
});
</script>
И делать доступными те группы, id которых равно значению списка. Зачем все опции перебирать? |
Цитата:
Мы ведь не знаем как формируется контент у ТСа. |
Цитата:
PS. Нужно еще добавить сброс второго списка при изменении первого. |
Цитата:
:thanks: |
| Часовой пояс GMT +3, время: 10:11. |