Javascript не вставляет значение в скрытое поле ввода django формы - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь передать значение в скрытое поле ввода в наборе форм.Однако, когда я нажимаю «Отправить», я ничего не получаю: «form-0-my-field»: [''].Может кто-нибудь помочь мне с этим вопросом?

Вот моя форма:

class MyForm(forms.Form):
    my_field = forms.CharField(widget=forms.HiddenInput(attrs={
        'class': 'my_field'}))

formset:

MyFormSet = formset_factory(MyForm, max_num=5)

views.py

def my_view(request):
    if request.method == 'POST':
        formset = MyFormSet(request.POST)
        if formset.is_valid():
            print(formset.cleaned_data)
    else:
        formset = MyFormSet()

    return render(request, 'my_template.html', ctx={'formset': formset})

И, наконец, мой шаблон со скриптом вконец цели my_field:

{% for form in formset.forms %}
        {% for field in form.visible_fields %}
            {# Include the hidden fields in the form #}
            {% if forloop.first %}
              {% for hidden in form.hidden_fields %}
                {{ hidden }}
              {% endfor %}
            {% endif %}
            {{ field.errors.as_ul }}
            {{ field }}
          </td>
        {% endfor %}
    <button type="submit">Submit</button>

<script>
document.getElementsByClassName("my_field").value = "some str";
alert(document.getElementsByClassName("my_field").value);
</script>

1 Ответ

0 голосов
/ 08 июня 2018

Классы могут соответствовать нескольким элементам.Таким образом, document.getElementsByClassName возвращает HTMLCollection, то есть массив объектов (обратите внимание на s в имени метода).

Чтобы присвоить значение, вам необходимо сослаться на элемент в коллекции:

document.getElementsByClassName("my_field")[0].value = "some str";

Однако желательно, чтобы вы делали это с помощью идентификаторов, а не классов.

...