У меня есть приложение, в котором у меня есть много экземпляров передачи отдельных выбранных пользователем элементов в поле формы без проблем, но я боюсь делайте то же самое в случае мультиселектора. Кажется, что функция JQuery.val()
создает правильный массив данных, но мое поле формы на сервере показывает пустую строку. Я унаследовал это приложение, и я немного об этом подумал.Передайте несколько полей данных из <select multiple> в Django formfield через 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)
.
Какие-либо намеки, в которых я ошибаюсь? Спасибо.
Какую версию JQuery вы используете? –