您的假设是正确的,即错误位于它如何获取最后一个元素。您有以下代码:
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);
希望我能帮助你。