フィールドの必須属性のオンとオフを切り替えたいフォームがあります。フォームのCharFieldの必須属性を正常に使用できますが、ページの更新時またはフォームをPOSTしたときのみです。GETコールバックを実行しようとすると、「時々」フィールドのオンとオフを切り替える必要がありますが、「必須」のhtmlクラスは更新されません。
更新されないhtmlで、「必須」クラスを示しています。これはDjangoによって自動生成されます:
<dt class="required">
<label for="sometimes">Username</label>
</dt>
簡略化されたviews.py:
form_validate(httpreq):
form = SetupForm()
if httpreq.GET.has_key('req'):
# In this case, it is not the initial call
if httpreq.GET['req'] == 'true':
print 'required is True'
form.fields['sometimes'].required = True
else:
print 'required is False'
form.fields['sometimes'].required = True
else:
# Here, required = True/False behaves as expected
# When the field is required, it has the class="required"
form.fields['sometimes'].required = True
# For forms.fields['sometimes'].required = False,
# class="required" is absent in the html
class SetupForm(forms.Form):
sometimes = forms.CharField(widget=forms.TextInput(attrs={'id':'sometimes','size':FIELD_LENGTHS['shorttext'],}), label=ugettext_lazy("Username"),)
私のjQuery:
$(document).ready(function(){
$('#tog').click(function(){
var params = {}
if ($("#tog").is(":checked")) {
params = {"auth":true};
} else {
params = {"auth":false};
}
var url = "/url_for_form/?fmt=json";
$.getJSON(url, params, function(jsonrpc, xhrstatus, xhr) {
console.log("JSON callback");
});
});
});
では、どうすればhtmlにクラス名を更新させることができますか?