Django - 如何根据列表框中选择的选项显示字段?

时间:2014-01-09 21:21:08

标签: django

以下是表格。我只想在用户选择每周选项时显示网络复选框(天)。是否应该在视图,模板或表单中完成此逻辑?有人能指点我一个例子吗?

class bugtoolform(ModelForm):
    F_Choices = (
        ('DAILY','DAILY'),
        ('HOURLY','HOURLY'),
        ('WEEKLY','WEEKLY'),        
        )
    frequency = forms.TypedChoiceField(choices = F_Choices)

    DAY_CHOICES = (
        ('1', 'MONDAY'),
        ('2', 'TUESDAY'),
        ('3', 'WEDNESDAY'),
        ('4', 'THURSDAY'),
        ('5', 'FRIDAY'),
        ('6', 'SATURDAY'),
        ('7', 'SUNDAY'),
        )   

    days = forms.MultipleChoiceField(required=False,
        widget=forms.CheckboxSelectMultiple, choices=DAY_CHOICES)
    #</br>

    class Meta:
        model = bugtool     
        fields = ['frequency','days']

2 个答案:

答案 0 :(得分:2)

这是你想用javascript在前端做的事情。

以下是高级别的一般过程:

  • 默认使用CSS(显示:无)或javascript
  • 隐藏日期复选框
  • 收听频率字段上的'change' event
  • 当'更改'事件触发时,评估频率字段的值并显示天数复选框,如果使用CSS(显示:块)或javascript
  • 选择每周

答案 1 :(得分:1)

我能够使用id字段让jquery工作,但我不知道如何使用django表单。 无法在脚本中相应地检索表单字段值。任何帮助将不胜感激。

以下是我的模板

<html>
<head>
<h1>Tool !!!!</h1>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$('#{{form.frequency}}').change(function(){
if( $('#{{form.frequency.value}} == 'WEEKLY' ) {
     $('#showthis').show();
} else {
     $('#showthis').hide();
}
});
});
</script>

<div id='showthis'>test test</div>
</head>
<body> 
<form action="/tool/" method="post">
{% csrf_token %}
Frequency {{form.frequency}}
</br>
</br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{{form.days.as_hidden}}

</br>        
    <input type="submit" value="Submit">
</form>
</body>
</html>