desperadik
@desperadik
Истина где-то рядом.

Как переинициализировать селекты?

Добрый день!
Использую форму:

<form id="Form" action="" method="POST">
            {% csrf_token %}
            <input type="hidden" name="data-id" value="{{ id }}">
            <div>
                <label for="id_title">Название структуры:</label>
                <div>
                    <input id="id_name" name="name" type="text" value="{{ form_model.name.value }}" required />
                </div>
            </div>
            {#     Inline         #}
            <div>Органы управления</div>
            {{ form_inline.management_form }}
            {{ form_inline.non_form_errors }}
            {% for form in form_inline.forms %}
                <div class="inline-management {{ form_inline.prefix }}">
                    <div>
                        <div>
                            <label for="id_structure-{{ forloop.counter0 }}-name">Название органа управления:</label>
                            <input id="id_structure-{{ forloop.counter0 }}-name" maxlength="255"
                                   name="structure-{{ forloop.counter0 }}-name" type="text"
                                   {% if form.name.value %}value="{{ form.name.value }}"{% else %}placeholder="Введите название ..."{% endif %} />
                        </div>
                        <div>
                            <label for="id_structure-{{ forloop.counter0 }}-header">Руководитель:</label>
                            <select id="id_structure-{{ forloop.counter0 }}-header"
                                    name="structure-{{ forloop.counter0 }}-header">
                                <option value="">Выберите руководителя ...</option>
                                {% for id, name in form.fields.header.choices %}
                                    <option value="{{ id }}" {% if id == form.header.value %} selected="selected" {% endif %}>{{ name }}                                                                                                      </option>
                            {% endfor %}
                            </select>
                        </div>
                        <div>
                            <label for="id_structure-{{ forloop.counter0 }}-managers">Состав:</label>
                            <select class="form-control input-sm select-managers" id="id_structure-{{ forloop.counter0 }}-managers"
                                    name="structure-{{ forloop.counter0 }}-managers"multiple="multiple">
                                {% for id, name in form.fields.managers.choices %}
                                    <option value="{{ id }}"
                                            {% for item in form.managers.value %}
                                                {% if id == item %} selected="selected"
                                                {% endif %}{% endfor %}>
                                        {{ name }}
                                    </option>
                                {% endfor %}
                            </select>
                        </div>
                    </div>
                </div>
                <script>
                    $('#id_structure-{{ forloop.counter0 }}-header').selectize();
                    $("#id_structure-{{ forloop.counter0 }}-managers").multiselect({
                        enableFiltering: true,
                        enableClickableOptGroups: true,
                        nSelectedText: ' - выбрано',
                        maxHeight: 400,
                        buttonWidth: '100%'
                    });
                </script>
            {% endfor %}
            <button type="submit" >Сохранить</button>

        </form>
<script>
$('.inline-management.{{ form_inline.prefix }}').formset({
            prefix: '{{ form_inline.prefix }}',
            addText: 'Добавить',
            added: 
                      $(function(row, formCount){
                         $('#id_structure-'+formCount+'-header').selectize();
                        $('#id_structure-'+formCount+'-managers').multiselect({
                            enableFiltering: true,
                            enableClickableOptGroups: true,
                            nonSelectedText: 'Ничего не выбрано',
                            nSelectedText: ' - выбрано',
                            maxHeight: 400,
                            buttonWidth: '100%'
                        });
                       }) 
        });
</script>


В ней подключены selectize.js, multiselect.js и также jquery.formset.js с помощью которой добавляются дополнительные формы, и после добавления(added) срабатывает функция, которая к элементам (#id_structure-'+formCount+'-header') и (('#id_structure-'+formCount+'-managers') применяет вышеуказанные "селекты". Проблема в том что, после добавления новой формы инлайна("селекты" не подвязываются (при тыке на новый селект меня отбрасывает на тот что выше)).
Походу глаза намылил.
Про скрипт в цикле:
Нужен для тех форм которые приходят заполненными.(Если так делать недзя - "пните")
  • Вопрос задан
  • 362 просмотра
Пригласить эксперта
Ответы на вопрос 1
lightarhont
@lightarhont
python/php developer
в анонимную функцию их и перезапускать по необходимости её...
Ответ написан
Ваш ответ на вопрос

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

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