Django和Javascript:依赖下拉列表不起作用

Django and Javascript: dependent dropdown not working

本文关键字:下拉列表 不起作用 依赖 Javascript Django      更新时间:2023-09-26

我基本上是使用Javascript和Django的新手。

这是我的脚本:

<script>
        $(document).ready(function() {
            $("#source").change(function() {
                var el = $(this);
                var reg = [];
                var name = [];
                {% for item in city %}
                    reg.push({{ item.reg }});
                    name.push({{ item.name }});
                {% endfor %}
                var a = getElementById("status").length;
                for(val i = 0; i<a; i++){
                    if(el.val() == reg[i]){
                        $("#status").append("<option id = "+ reg[i] +">" + name[i] + "</option>");
                    }
                }
            });
        });
    </script>

这是我的表格:

<form method = "POST">
        {% csrf_token %}
        <select id="source" name="source">
            <option>-----</option>
            {% for item in region %}
                <option id = {{ item.id }}>{{ item.name }}</option>
            {% endfor %}
        </select>
        <select id="status" name="status">
            <option>-----</option>
        </select>
        <select id="3">
            <option>-----</option>
            {% for item in zip %}
                <option id = {{ item.cit }}>{{ item.num }}</option>
            {% endfor %}
        </select>
    </form>

我想要实现的是,第二个下拉框将显示第一个下拉框中所选项目下的内容。事实上,我不明白我做错了什么,因为每当我加载它时,它都不会显示任何结果,也没有显示任何错误。我错过了什么?提前感谢!

我怀疑这部分:

            {% for item in city %}
                reg.push({{ item.reg }});
                name.push({{ item.name }});
            {% endfor %}

除非{{ item.name }}计算为像'cardiff'那样的引用值,否则它将呈现为:

name.push(cardiff)

这将是不明确的。也许有一些报价:

name.push('{{ item.name }}')

另外,for循环不应该是这样的吗?

for(val i = 0; i<reg.length; i++){

{{ item.cit }}中也有一个打字错误。

您还应该检查并粘贴生成的HTML和JS。

专业提示:你应该从浏览器中使用JS调试器!!!