У меня есть приложение, в котором у меня есть много случаев передачи отдельных выбранных html выбранных пользователей в поле формы без проблем, но я пытаюсь сделать то же самое в случае множественного выбора. Кажется, что функция JQuery.val()
создает правильный массив данных, но мое поле формы на сервере показывает пустую строку. Я унаследовал это приложение и в некотором смысле я нуб.
Соответствующая функция JavaScript
$('.exemptionfield').change(function() {
var exemptionfield = $(this)
$.ajax({
url: '/form/ASubstanceExemption',
type: 'POST',
data: {
sclId: $('#sclId').val(),
substance: exemptionfield.attr('id'),
exemption: exemptionfield.val()
}
})
})
Форма выглядит как
class ASubstanceExemption(forms.Form):
buttonTitle = 'submit'
title = 'not used'
sclId = forms.IntegerField()
substance = forms.CharField()
exemption = forms.MultipleChoiceField(required=False,
choices=kExemptions)
def handle(self, *args, **kwargs):
sclId = self.cleaned_data['sclId']
substance = self.cleaned_data['substance']
exemption = self.cleaned_data['exemption']
print exemption
etc...
Выбор HTML выглядит как
<select multiple size="5" class="exemptionfield" id="Lead/lead compounds">
<option value="1(a)">
1(a)
</option>
<option value="1(b)">
1(b)
</option>
<option value="1(c)">
1(c)
</option>
<option value="1(d)">
1(d)
</option>
etc....
В тех случаях, когда у меня есть один выпадающий список html и один выбор form.ChoiceField
, выбранное значение (типа exemptionfield
) будет передано в переменную освобождения в моей форме. Там никогда не было проблем. Если я переключаюсь на form.MultipleChoiceField
и выбираю одну переменную для передачи, как, например, в exemptionfield.val()[0]
, это также работает нормально. Это будет проходить в формате (пример) [u'1(b)']
. Но в тот момент, когда я удаляю [0]
и использую только exemptionfield.val()
, мне кажется, что я получаю только пустой массив в своей форме. Мое действие печати только показывает []
в результате. Но, глядя на значения, отправленные JavaScript с помощью функции оповещения, он говорит мне, что отправляет 1(b)
, 1(c)
, 1(d)
.
Любые намеки, где я иду не так?
Спасибо.