Выбор options в дублированном select2 блоке

111
28 августа 2019, 05:00

Второй день бьюсь с такой проблемой - после клонирования строки, содержащей блок select2 с какой-либо выбранной опцией в новом блоке отсутствует возможность повторного выбора этой опции. Все опции вбиваются в select из базы при помощи PHP.

После выбора и клонирования пытался отыскать нужный option таким способом

newEntry.find('option:selected').removeAttr('selected').attr('[aria-selected=false]')

Но, увы, результатов это не дало.

$(document).ready(function() { 
  $(".entry").children("select").select2({}); 
  $(".btn-add").click(function() { 
    $(".entry") 
      .children("select") 
      // call destroy to revert the changes made by Select2 
      .select2("destroy") 
      .removeAttr('data-live-search') 
      .removeAttr('data-select2-id') 
      .removeAttr('aria-hidden') 
      .removeAttr('tabindex'); 
  }); 
  $(document).on('click', '.btn-add', function(e) { 
    e.preventDefault(); 
 
    var Count = $('.entry').size(); 
 
    var controlForm = $('.controls fieldset:first-child'), 
      currentEntry = $(this).parents('.entry:first'), 
      newEntry = $(currentEntry.clone(true)).appendTo(controlForm); 
 
    var SplitVar = (newEntry.find('select').attr('name')).split('-'); 
    Count > SplitVar[1] ? newEntry.find('select').attr('name', 'Mark-' + ++Count) : newEntry.find('select').attr('name', 'Mark-' + ++SplitVar[1]); 
 
    newEntry.find('option:selected').removeAttr('selected').attr('[aria-selected=false]'); 
 
    newEntry.find('input').val(''); 
    controlForm.find('.entry:not(:last) .btn-add') 
      .removeClass('btn-add').addClass('btn-remove') 
      .html('<div id="rectangle"></div>'); 
 
    $(".entry").children("select").each(function() { 
      $(this).select2({}); 
    }); 
 
  }).on('click', '.btn-remove', function(e) { 
 
    $(this).parents('.entry:first').remove(); 
    e.preventDefault(); 
    $(".entry").children("select").each(function() { 
      $(this).select2({}); 
    }); 
    return false; 
  }); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<div class="controls"> 
  <fieldset> 
    <div class="entry input-group col-xs-3"> 
      <input class="name" type="text" name="name[]"> 
      <select class="select-1 select-block" name="Mark-1"> 
        <option selected disabled hidden style='display: none' value=''>Выберите марку</option> 
        <?php foreach ($Marks as $value):?> 
        <option value="<?php echo $value['id_M']?>"> 
          <?php echo $value['MarkName']?> 
        </option> 
        <?php endforeach;?> 
      </select> 
      <input class="time" type="number" name="cost[]" size="6"> 
      <div class="btn-add"> 
        <div id="cross"></div> 
      </div> 
    </div> 
  </fieldset> 
</div>

Вопрос - каким способом можно в новом блоке обнулить (или перезаполнить?) все опции, чтобы их можно было повторно выбрать?

Буду благодарен за любые подсказки!

UPD: неужели никто не сталкивался с подобной проблемой и никто не знает как ее решить?

READ ALSO
Как объединить две формы заявки?

Как объединить две формы заявки?

Есть форма для подтверждения номера по смс (апи с смс-центром):

134
Нужна ли авторизация (не явная) в API на php?

Нужна ли авторизация (не явная) в API на php?

Передо мной поставили задачуНаписать на API к простому приложению на php реализованного по паттерну MVC и без применения какого-либо frameworks

145
Ошибка при установке Bitrix на Open Server

Ошибка при установке Bitrix на Open Server

Устанавливаю "Управление сайтом" и на 6 этапе "Установка модуля "Сайты 24" (файлы)" error

112
Как правильно спарсить элемент в simple_html_dom

Как правильно спарсить элемент в simple_html_dom

Пытаюсь спарсить цену с сайта (по class="detail-price-uah"), но она грузится не на все указанные товары, то есть к одним товарам грузится к другим нетИ...

116