首页 > django中给表单某字段通过attrs加入javascript函数无反应?

django中给表单某字段通过attrs加入javascript函数无反应?

具体是这样的:
models.py

class Filter(models.Model):
    name = models.CharField(max_length=20,unique=True)
    def __str__(self):
        return self.name
class Plan(models.Model):
    plan_name =models.CharField(max_length=20,primary_key=True)
    filter = models.ForeignKey('Filter')
    def __str__(self):
        return self.plan_name

forms.py:

class PlanForm(forms.ModelForm):  
    class Meta:
        model = Plan
        fields = ('plan_name','filter')
        widgets={
            'filter':forms.Select(attrs={'id':'filter','onchange':'filter_params()'})
        }

模板:

{% csrf_token %}
{% for field in form %}
<div>
    <label>{{field.label}}</label>
    {{field}}
</div>
{% endfor %}

<div  id="FIR" style="display:none">
    <label>{{FIR_params.label}}</label>
        {{FIR_params}}
</div>
        
<div  id="NotFIR" style="display:none">
<label>{{NotFIR_params.label}}</label>
    {{NotFIR_params}}
</div>

<script>
    function filter_params(){
        choice = document.getElementById("filter").value;
        FIR_params = document.getElementById("FIR");
        NotFIR_params = document.getElementById("NotFIR");
        switch(choice){
            case "FIR":
                FIR_params.setAttribute("style","display");
                NotFIR_params.setAttribute("style","display: none");
            case "NotFIR":
                FIR_params.setAttribute("style","display: none");
                NotFIR_params.setAttribute("style","display");
        }
    }
</script>

其中FIR和NotFIR分别是两个模板表单,两表字段都是字符输入。模板中循环的form是PlanForm的各字段。
想法是选择不同filter,根据filter不同值出现不同字符输入选项。
可是在页面中字符输入框一个都不显示,更不用说不同选择出现不同输入框的情况了。
求解?


到具体的html页面上看看source,看看是不是渲染错误了,有没有js报错什么的,或者直接调js

django可以渲染javascript的东西的

【热门文章】
【热门文章】