Вы были правы, предполагая, что ошибка была обнаружена при получении последнего элемента.У вас был следующий код:
var html = $(".copy-fields").html();
$(".after-add-more").after(html);
var lastInput = $(".control-group").closest(".start").prevObject
var lastInput2 = lastInput[lastInput.length-2].getElementsByClassName("start")[0];
Это добавит новые скопированные поля сразу после первого поля ввода, но при получении элемента из массива, который вы хотите использовать flatpickr, вы будете использовать lastInput.length-2
.Этот индекс всегда будет индексом последнего видимого поля.Проблема заключалась в том, что добавленное вами поле было не последним видимым, а фактически вторым (потому что оно добавляется непосредственно после первого поля ввода).Поэтому он перезапишет предыдущие значения.
Так что, если вы просто измените var lastInput2 = lastInput[lastInput.length-2].getElementsByClassName("start")[0];
на var lastInput2 = lastInput[1].getElementsByClassName("start")[0];
, все будет работать так, как должно быть.
В качестве альтернативы вы можете оставить var lastInput2 = lastInput[lastInput.length-2].getElementsByClassName("start")[0];
как есть и вместо этого изменить место нового элемента.Чтобы всегда положить его в конец, вы могли бы сделать что-то вроде этого $("#button").before(html);
Надеюсь, я смогу вам помочь.