Jquery Django使用字段的值添加字段(或隐藏并显示)
问题描述:
所以我在Django中进行编程,我希望在Choice字段的值中出现一个新字段。 所以我在HTML中Jquery Django使用字段的值添加字段(或隐藏并显示)
<script type="text/javascript">
$(document).ready(function() {
if($('#{{clinic_details.parity}}' == 'AtleastOne')){
$('#paritefield').show();
}else{
$('#paritefield').hide();
}
});
</script>
<div class="form-group">
<div id="require">
{% csrf_token %}
{{ clinic_details.as_p}}
{{ ClinicForm.}}
</div>
</div>
<div class="form-group">
<div id="paritefield">
{{ parityfield.as_p }}
</div>
</div>
有这个在我的模板,并在forms.py我有
class ClinicForm(forms.Form):
SELECT_ETHNICITY = (('1','Europe and North Africa'),('2','East-Asian'),)
origin = forms.ChoiceField(widget=forms.Select,
choices=SELECT_ETHNICITY, label ="Origin")
SELECT_DIABETE = (('1','None'),('2','Not documented'),)
diabete = forms.ChoiceField(widget=forms.Select,
choices=SELECT_DIABETE, label ="Diabetes")
SELECT_PARITY = (('None','None'),('AtleastOne','At least One'),)
parity = forms.ChoiceField(widget=forms.Select,
choices=SELECT_PARITY, label ="Parity")
fields = ['origin', 'diabete',]
class ParityfieldForm(forms.Form):
SELECT_PARITYFIELD = (('1','None'),('2','Not documented'),)
parityfield= forms.ChoiceField(widget=forms.Select, choices=SELECT_DIABETE, label ="Parity field")
终于在view.py我有
def form_view(request):
clinic_details = ClinicForm(request.POST or None)
parityfield = ParityfieldForm(request.POST or None)
title="Form"
if clinic_details.is_valid():
fsv = clinic_details.save(commit=False)
return render(request,"template.html",{"clinic_details":clinic_details, "parityfield":parityfield, "title": title})
所以我想这当Choice字段奇偶校验的值是'AtleastOne'时,它会显示另一个字段,但不刷新页面,感谢Jquery。
答
为什么你需要Jquery呢? 您可以尝试检查页面渲染时的值,如果它等于AtleastOne
,则可以添加该字段。
<div class="form-group">
<div id="require">
{% csrf_token %}
{{ clinic_details.as_p}}
</div>
</div>
{% if clinic_details.parity == 'AtleastOne' %}
<div class="form-group">
<div id="paritefield">
{{ parityfield.as_p }}
</div>
</div>
{% endif %}
谢谢!但它似乎并不奏效。如果我想要一个ChoiceField的结果,我只需要做form.field而不是form.field.value或其他东西是正确的? – Anisotropie