Ich habe ein Formular, für das ich das erforderliche Attribut eines Feldes ein- und ausschalten möchte. Ich kann die required attribute of the Form's CharField erfolgreich aber nur auf einer Seitenaktualisierung verwenden oder wenn ich das Formular POST. Wenn ich versuche, einen GET-Callback durchzuführen, muss das Feld 'manchmal' ein- und ausgeschaltet werden, aber die HTML-Klasse 'erforderlich' wird nicht aktualisiert.Django "erforderlich" -Attribut/Klasse nicht auffrischend
Der HTML-Code, der nicht aktualisiert wird, zeigt die Klasse "required" an. Dies wird automatisch generiert von Django:
<dt class="required">
<label for="sometimes">Username</label>
</dt>
Simplified 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"),)
Meine 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");
});
});
});
Also, wie kann ich die html machen den Klassennamen auffrischen?