Сбрасываются зависимые select'ы при выборе
не могу понять, как мне добиться, чтобы при повторном изменении select'а options не добавлялись повторно (чтобы этого избежать, обнуляю кол-во options при каждом изменении) и чтобы при изменении, например, year month и day не сбрасывались на 1. Заранее спасибо, друзья
<form id="date">
<div class="wrap"> Год:
<select name="year" id="year"></select>
</div>
<div class="wrap"> Месяц:
<select name="month" id="month"></select>
</div>
<div class="wrap"> День:
<select name="day" id="day"></select>
</div>
</form>
let formDate = document.forms.date;
setValue(formDate.year, 2000, 2010);
setValue(formDate.month, 1, 12);
setValue(
formDate.day,
1,
new Date(formDate.year.value, formDate.month.value, 0).getDate()
);
function setValue(select, min, max) {
for (let i = min; i <= max; i++) {
select.add(new Option(i));
}
}
date.addEventListener('change', function (event) {
let target = event.target;
switch (target.id) {
case 'year':
formDate.month.options.length = 0;
setValue(formDate.month, 1, 12);
case 'month':
formDate.day.options.length = 0;
setValue(
formDate.day,
1,
new Date(formDate.year.value, formDate.month.value, 0).getDate()
);
}
});
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
function setValue(select, min, max) {
const old = select.value;
select.innerHTML = '';
for (let i = min; i <= max; i++) {
select.add(new Option(i));
}
select.value = old;
}