@denism300

Как очистить поле select2 при клонировании?

Есть форма с полями типа select. К ней прикручен скрип select2 для удобства выбора значений.
Код формы на выходе примерно такой:
<div class="timetable-list">
    <p class="timetable__items" style="display: flex; align-items: flex-start;">
        <span style="display: block; margin-bottom: 10px;">
            <label for="personal__0" style="display: inline-block; width: 130px;">Ведущие:</label>
            <div class="select2-container select2-container-multi" id="s2id_personal__0" style="width: 343px;">
                <ul class="select2-choices">  
                    <li class="select2-search-choice">
                        <div>Анна</div>
                        <a href="#" class="select2-search-choice-close" tabindex="-1"></a>
                    </li>
                    <li class="select2-search-choice">    
                        <div>Оксана</div>    
                        <a href="#" class="select2-search-choice-close" tabindex="-1"></a>
                    </li>
                    <li class="select2-search-field">    
                        <label for="s2id_autogen4" class="select2-offscreen">Ведущие:</label>    
                        <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input" id="s2id_autogen4" placeholder="" style="width: 20px;">  
                    </li>
                </ul>
                <div class="select2-drop select2-drop-multi select2-display-none">   
                    <ul class="select2-results">   
                        <li class="select2-no-results">No matches found</li>
                    </ul>
                </div>
            </div>
            <select id="personal__0" multiple="" name="extra[timetable][personal][0][]" style="width: 343px;" tabindex="-1" class="select2-offscreen">
                <option value="-1">Выбрать</option><option value="1094">Яна</option>
                <option value="1093" selected="selected">Анна</option>
                <option value="1092">Катя</option>
                <option value="1091" selected="selected">Оксана</option>
                <option value="1056">Маша</option>								
            </select>
        </span>
        <span class="dashicons dashicons-plus add-timetable-item" style="cursor: pointer;"></span>
        <span class="dashicons dashicons-trash delete-timetable-item" style="cursor: pointer;"></span>
    </p>
</div>

Клонирую форму так:
jQuery(document).ready(function() {
    var timetable = jQuery('.timetable-list');
    jQuery('.add-timetable-item', timetable).click(function() {
        timetableItem = timetable.children('.timetable__items').last();
        newItem = timetableItem.clone(true);
        newItem.find('select').each(function() {
            newInputId = jQuery(this).attr('id');
            newName = jQuery(this).attr('name');
            jQuery(this).attr({
                id: newInputId.replace(/\d+$/, m => +m + 1),
                name: newName.replace(/\d/, m => +m + 1)
            });
            jQuery(this).find('option:selected').each(function() {
                jQuery(this).removeAttr('selected');
            });
            jQuery(this).siblings('label').attr('for', newInputId.replace(/\d+$/, m => +m + 1));
        });
        divID = newItem.find('div.select2-container.select2-container-multi').attr('id');
        newItem.find('div.select2-container.select2-container-multi').attr('id', divID.replace(/\d+$/, m => +m + 1));
        newItem.find('select.select2-offscreen').select2('val', '');

        timetableItem.after(newItem);
    });
});

Однако, выбранные значения сбрасываются не у склонированного поля, а у того, которое клонирую. Как исправить?
  • Вопрос задан
  • 416 просмотров
Пригласить эксперта
Ответы на вопрос 1
https://codepen.io/achernyavskiy/pen/xxbmoWQ - посмотрите.
Лично у меня ваша верстка развалилась. Возможно с этим связано. Посмотрите в браузере. Так ли у вас отображается DOM, как было задумано.
Ответ написан
Ваш ответ на вопрос

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

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