Когда опция выбрана, я хочу изменить другие опции тегов выбора
В моем шаблоне Django есть два тега select. Я хочу изменить второй тег так, чтобы он был связан с первым. Например, когда в первом теге выбирается опция animals, я хочу показывать животных во втором теге select. Например, при выборе растений в первом теге я хочу показывать растения во втором теге. Как я могу это сделать?
(animals or plants)
<select id="creatures">
{% for x in list %}
<option value="{{x.creature}}">{{x.creature}}</option>
{% endfor %}
</select>
<select id="instances">
{% for y in instances %}
<option value="{{y.instance}}">{{x.instance}}</option>
{% endfor %}
</select>
Есть несколько способов.
Вот один из подходов, который вы можете использовать:
document.getElementById("first").addEventListener("change", (e) => {
const selectedOption = e.target.value;
// update second select based on what is selected
document.getElementById("second").innerHTML = getSecondSelectOptions(
selectedOption
);
});
function getSecondSelectOptions(category) {
const animals = ["cat", "dog", "bird"];
const plants = ["lily", "lotus"];
if (category === "animals")
return animals
.map((value) => `<option value="${value}">${value}</option>`)
.join("");
else if (category === "plants")
return plants
.map((value) => `<option value="${value}">${value}</option>`)
.join("");
else return ""; // clear second select
}
Мы обновляем содержимое второго select с помощью innerHTML
.
Другой подход заключается в том, чтобы различные элементы select были записаны статически, но скрыты по умолчанию. Затем вы можете скрыть нужный вам элемент select на основе опции, выбранной в первом select.
Надеюсь, это поможет.