@maestro07

Как отправить через form выбранные input?

Есть список, с помощью select выбираю и сохраняю выбранные элементы в массив. и этот массив надо передать через form на сервер. полученный ответ надо открыть в новым окне. при нажатии на "Распечатать" надо собрать выделенные элементы в массив и передать его в <input type="hidden" name="doc_ids[]" value="">. У меня на сервер всегда уходит пустой массив, но в консоле.лог выводит массив. Мне кажется что запрос отправляется быстрее пока массив заполнится выделенными элементами.

<form action="{% url 'documents:print_documents'%}" method="POST" target="_blank">
    <input type="hidden" name="doc_ids[]" value="">
    <input class="btn btn-sm btn-default print-all-btn" type="submit" name="send" value="Распечатать">
</form>

printAll.on("click", function(){
    var id = [];
    $('input.select-inv-check:checked').each(function() {
        id.push($(this).data('id'));
    });
    document.getElementsByName("doc_ids[]").value = id;
});
  • Вопрос задан
  • 348 просмотров
Решения вопроса 1
sergski
@sergski
web-developer
так:

<form id="form" action="{% url 'documents:print_documents'%}" method="POST" target="_blank">
    <input class="select-inv-check" data-id="123" type="checkbox">123
    <input class="select-inv-check" data-id="456" type="checkbox">456


    <input class="btn btn-sm btn-default print-all-btn" id="printAll" type="submit" name="send" value="Распечатать">

</form>


$( "#form" ).submit(function( event ) {

    var id = [];

    $('input.select-inv-check:checked').each(function() {
        id.push($(this).data('id'));
    });

    if (id.length != 0) {

        id.forEach(function(item, i) {
          
          var elInput = document.createElement("input");
              elInput.setAttribute('type', 'hidden');
              elInput.setAttribute('name', 'doc_ids[]');
              elInput.setAttribute('value', '');
              elInput.value = id[i];

            $("#form").append(elInput);

        });

        return;
    }

    event.preventDefault();
    
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы