Имеется текстовое поле
<textarea id="CartNote" name="note" style="width:100%; height:100px; background:#fff; margin:20px 0; padding:10px;" ></textarea>
И несколько выпадающих списков формата:
<select class="selectcolor_<?=s;?>" id="selectcolor_<?=s;?>">
..... выборка из базы ......
<option value="<?=color;?>:<?=title;?>"><?=title;?></option>
.....
</select>
Для каждого поля есть свой код обработки
<script type="text/javascript">
$('#selectcolor_<?=s;?>').change(function(){
var First = $("#CartNote").html();
let arr = First.split('; ');
arr = arr.filter(Boolean);
let keyArray = $(this).val().split(':');
console.log(arr.length);
for (let i = 0; i < arr.length; i++) {
if (arr[i].indexOf(keyArray[0]) > -1) {
arr.splice(i);
}
}
$("#CartNote").html(arr.toString("; ")+$(this).val()+"; ");
});
</script>
Этот код добавляет строку к текстовому полю при смене выбранного пункта списка:
Красный:Стол; Зеленый:Стул; Красная:Простыня;
Но если потом снова сменить цвет стола то будет:
Желтый:Стол;
В чем ошибка? по идее ведь должно было быть
Зеленый:Стул; Красная:Простыня; Желтый:Стол;