我有一个 django 表单,其中包含两个用于选择气候参数的字段。这两个字段都由相同的 CHOICES 填充,但我需要第二个字段受第一个选项的影响。基本上,如果在第一个参数中选择了一个参数,那么它应该从第二个选项中删除。
我现在有代码可以很好地解决这个问题,除了一个问题。我需要这些字段具有语言意识。
表格.py
class ClimateForm(forms.Form):
...
param1 = forms.ChoiceField(choices=PARAM_CHOICES, label=_('Y axis one'), initial=_('Not Specified'),
widget=forms.Select(attrs={"onChange":'activateParam()'}),
)
param2 = forms.ChoiceField(choices=PARAM_CHOICES, label=_('Y axis two'), initial=_('Not Specified'),
required = False,
)
...
然后我调用activateParam()
执行此操作的函数:
filter_form.js:
function activateParam() {
// get value to exclude from select
var param1Val = document.getElementById("id_param1").value;
// get next element id
var param2 = document.getElementById("id_param2");
// param2.setAttribute("style", "display:block");
updateSelect($('select[name=param2]'), param1Val);
}
function updateSelect(select, value) {
// find and remove existing options
select.find('option').remove();
// loop through results and append to select as options
for (var k in climate_params) {
if (k!=value) {
select.append($('<option value="'+k+'">'+climate_params[k]+'</option>'));
}
}
}
climate_params
只是填充第二个字段的值和字符串数组:
var climate_params = {
'': 'Not Specified',
'mean_air_temp': 'Mean Air Temperature',
'min_air_temp': 'Min Air Temperature',
'max_air_temp': 'Max Air Temperature',
'sea_temp': 'Sea Surface Temperature',
'mean_rel_hum': 'Mean Relative Humidity',
'precipitation': 'Preciptitation',
};
所以,我可以修改这个数组或包含另一个数组,但我需要知道如何将语言状态传递给这个 JS 脚本。有什么方法可以直接在 JS 中访问语言变量吗?
非常感谢任何帮助。