Второй день бьюсь с такой проблемой - после клонирования строки, содержащей блок 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: неужели никто не сталкивался с подобной проблемой и никто не знает как ее решить?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть форма для подтверждения номера по смс (апи с смс-центром):
Передо мной поставили задачуНаписать на API к простому приложению на php реализованного по паттерну MVC и без применения какого-либо frameworks
Устанавливаю "Управление сайтом" и на 6 этапе "Установка модуля "Сайты 24" (файлы)" error
Пытаюсь спарсить цену с сайта (по class="detail-price-uah"), но она грузится не на все указанные товары, то есть к одним товарам грузится к другим нетИ...