我不确定这些字段在技术上是什么叫做,但它们是你有一组无线电选择的字段,每个字段都可以添加一些其他字段,只有在选择了相关的无线电时才会得到验证。
Field Label:
(*) Option 1
( ) Option 2 [Additional Field]
( ) Option 3 [Another Field], [Maybe Two]
我正在寻找的关键事项:
1)任何现有的帮助渲染此类字段的解决方案。即将附加字段与其选项分组。 2)(并不重要)处理验证的任何快捷方式,即只有在选择了其选项时才能验证附加字段。
通常当我做这种事情时,我最终不得不手动编写很多HTML,这是一个轮子,我宁愿避免重新发明。
答案 0 :(得分:0)
在客户端,您可以使用一些js,例如(使用jQuery):
$('input[name=your_radio_field_name]').change(function() {
switch ($(this).val()) {
case 'option1_value':
$('input[name=extra_field_for_option2], input[name=extra_field_for_option3]').hide();
break;
case 'option2_value':
$('input[name=extra_field_for_option2]').show();
$('input[name=extra_field_for_option3]').hide();
break;
// and so on ...
}
})
在服务器端,您可以使用此类字段验证功能:
def clean_extra_field_for_option2(self):
if self.cleaned_data.get('your_radio_field_name') != 'option_2_value':
return None
return self.cleaned_data.get('extra_field_for_option2')
def clean_extra_field_for_option3(self):
if self.cleaned_data.get('your_radio_field_name') != 'option_3_value':
return None
return self.cleaned_data.get('extra_field_for_option3')
当然,如果您经常遇到这种情况,首先应该尝试这样简单的事情,然后重构。