2017-07-18 70 views
0

所以我在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。

回答

0

爲什麼你需要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 %} 
+0

謝謝!但它似乎並不奏效。如果我想要一個ChoiceField的結果,我只需要做form.field而不是form.field.value或其他東西是正確的? – Anisotropie