如何使用下拉值筛选Django中显示的元素列表

2024-10-03 09:07:01 发布

您现在位置:Python中文网/ 问答频道 /正文

现在我有一个Django显示的表单列表:

{% for form in forms %}
  <form method="post" class="{{ form.css_class }}"novalidate>
    {% csrf_token %}
    {% include 'bs4_form.html' with form=form %}
    <input type="hidden" name="selected_form" value="{{ forloop.counter0 }}">
    <button type="submit" class="btn btn-primary">Submit</button>
  </form>
{% endfor %}

我还有一个下拉列表显示在表单上方:

<label>Choose a component to modify:
  <select class="rule-component" name="component">
    <option value="">Select One …</option>
    <option value="0">Option 0</option>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
    <option value="4">Option 4</option>
  </select>
</label>

我的问题是,当页面被输入时,我将如何显示没有表单,而当选择该页面时,如何显示与下拉列表值对应的单个表单

我尝试过使用JavaScript,但我对它不是很熟悉,也不知道如何让它与django模板语言交互。下面的代码允许我通过链接forloop.counter来记录要显示的表单元素:

<script type="text/javascript">
const formElement = document.querySelector(".rule-component")

formElement.addEventListener('change', (event) => {
  const selectElement = document.querySelector("form input[value='" + formElement.value + "']").parentNode;
  console.log(selectElement)
  const result = document.querySelector('.result');
  result.textContent = `You like ${selectElement.className}`;
});
</script>```

Tags: form表单列表valuetyperesultdocumentclass
1条回答
网友
1楼 · 发布于 2024-10-03 09:07:01

我发现,只是一些JavaScript需要链接到一个数组,“ids”和Django表单中的css_类:

<script type="text/javascript">
const ids=["jira-label", "label-rule-category"]
const dropDown = document.getElementById("rule-component");

dropDown.onchange = function() {
  for(var x = 0; x < ids.length; x++) {
    console.log(ids[x])
    document.getElementById(ids[x]).style.display = "none";
  }
  console.log(this.value)
  document.getElementById(this.value).style.display = "block";
}
</script>

相关问题 更多 >