Django Forms:动态地启用/禁用Charfield

时间:2013-08-21 11:18:00

标签: django django-forms

我有一个带有ChoiceField和CharField的表单。现在我想在选择ChoiceField的特定选项时启用CharField(例如选择3)。否则应禁用CharField。

My ChoiceField

choices = (('1', 'some text',),
           ('2', 'some text',),
           ('3', 'some text',))

host = forms.ChoiceField(choices = choices)

一个简单的CharField

hostAdress = forms.CharField()

你有什么想法可以这样做吗?

2 个答案:

答案 0 :(得分:0)

您可以从禁用/隐藏的char字段开始,并使用javascript来捕获选择框上的更改事件并更改该事件的字段。例如:

$("#id_choice").change(function(eObj) {
    $("#id_char").removeAttr("disabled");

这只是一个示例(使用jQuery),如果未选中选择框(不确定是否允许此行为),则需要确保再次禁用字段,并且还需要正确处理表单错误的显示如果你隐藏字段而不启用/禁用它。

答案 1 :(得分:0)

我会使用jQuery

$('your-select-input-selector').change(function() {
    var bDisable = true;
    if ($(this).val() == '3'):
        bDisable = !bDisabled;
    $('your-text-input-selector').prop('disabled', bDisable);
});

您还需要处理首次加载页面时已在值3上设置选择输入的情况。