удалить набор форм django с помощью javascript

#javascript #jquery #django #formset

#javascript #jquery #django #набор форм

Вопрос:

привет, я улучшил добавление набора форм Django и сохранил дополнительные данные формы, теперь я хочу удалить дополнительные формы, если пользователю нужно удалить некоторые из них, как это сделать

это мой шаблон и код javascript для добавления дополнительных форм, и он работает абсолютно нормально

 {% extends "base.html" %}
{% load crispy_forms_tags %}
{% block content %}
    <form  method="post" id="regForm" action=".">
        {% csrf_token %}
  <h1>Visa Info:</h1>
  <!-- One "tab" for each step in the form: -->
  <div class="tab">Name:
    {{form.visa_type|as_crispy_field}}

              {{ form.arrival_time|as_crispy_field }}

              {{ form.departure_time|as_crispy_field }}

            {{form.number_of_vistor|as_crispy_field}}
            {{form.purpose_trip|as_crispy_field}}
            {{form.city|as_crispy_field}}
            <h1>user info</h1>
            <div id="userform">
            {% for form_data in formset %}
            {{ form_data.management_form }}
            {{form_data.first_name|as_crispy_field}}
            {{form_data.last_name|as_crispy_field}}
            {{form_data.middle_name|as_crispy_field}}

              {{form_data.date_of_birth|as_crispy_field}}



            {{form_data.gender|as_crispy_field}}
            {{form_data.passport|as_crispy_field}}

              {{form_data.passport_ex|as_crispy_field}}


            {{form_data.nationality|as_crispy_field}}

            {% endfor %}

            </div>
            <a class="btn btn-default" id="{{ formset.prefix }}">add</a>
            {{ formset.management_form }}
  </div>
  <div class="tab">Dliver Information:
    {{emailForm.email|as_crispy_field}}
    {{emailForm.instructions|as_crispy_field}}
    Do you want the real visa to be dlever to you?
    <div class="btn btn-primary" id="show">yes</div>
    <div class="btn btn-danger" id="hide">no</div>
    <div class="menu">
        {{dliveryform|crispy}}
    </div>
  </div>
  <div style="overflow:auto;">
    <div style="float:right;">
      <button type="button" id="prevBtn" onclick="nextPrev(-1)">Previous</button>
      <button type="button" id="nextBtn" onclick="nextPrev(1)">Next</button>
    </div>
  </div>
  <!-- Circles which indicates the steps of the form: -->
  <div style="text-align:center;margin-top:40px;">
    <span class="step"></span>
    <span class="step"></span>
    <span class="step"></span>
    <span class="step"></span>
  </div>
</form>
{% endblock content %}
{% block javascript %}
    <script>

    $(document).ready(function(){
        // $('[data-toggle="datepicker"]').datepicker();
        var input = $('#userform').find('input')
        // console.log(input)
        // $("body").on('click', '.add-form-row',function () {
        //  return addForm($(this), String($(this).attr('id')));
        // });
        // var a = 1;
        // while (a) {
        //  console.log('test')
        // }
        $('#id_number_of_vistor').change(()=>{
            var key = $('#id_number_of_vistor option:selected').text();
            console.log(key)
            if (key > 1){
                for ( ;key > 1; --key) {
                    cloneMore('#userform','Visitor');
                }
            }else{
                //delete the formset
            }

        })
        // console.log($('#id_number_of_vistor option:selected').text())
        $('.menu').hide("slide");
        $('#show').click(function() {
          $('.menu').toggle("slide");
        });
        $('#hide').click(function() {
          $('.menu').hide("slide");
        });
    });


    function cloneMore(selector, type) {
        var newElement = $(selector).clone(true);
        var total = $('#id_'   type   '-TOTAL_FORMS').val();
        newElement.find(':input').each(function() {
            var name = $(this).attr('name').replace('-'   (total-1)   '-','-'   total   '-');
            var id = 'id_'   name;
            $(this).attr({'name': name, 'id': id}).val('').removeAttr('checked');
        });
        newElement.find('label').each(function() {
            var newFor = $(this).attr('for').replace('-'   (total-1)   '-','-'   total   '-');
            $(this).attr('for', newFor);
        });
        total  ;
        $('#id_'   type   '-TOTAL_FORMS').val(total);

        $(selector).after(newElement);
    }


    </script>
{% endblock javascript %}
 

я хочу удалить его с помощью javascript, как это сделать?

я пробовал много вещей с javascript, но он не работает

Комментарии:

1. Вы должны попробовать github.com/elo80ka/django-dynamic-formset .

2. если я использую его, мне придется переписать весь свой код

3. Вы все еще можете воспользоваться некоторыми указаниями о том, как удалить. по сути, вам нужно найти форму, которую необходимо удалить, затем удалить эту форму и перебрать все остальные формы, чтобы обновить их name атрибут.