我在formset上使用jQuery datepicker,我们可以在其中添加和删除表单。添加新表单时,我在set_fields
原型中添加了Form
函数,该函数将日期选择器附加到新字段,这样可以正常工作。
但是,在删除表单时,我会从DOM中完全删除所选表单并更新其他表单的ID,以便它们连续编号(因此后端可以预期给定数量的连续编号表单而不是维护'已删除'列表)。
我遇到的问题是,当我删除表单并且其余表单的ID已更改时,datepickers的绑定将保留在下一个表单上,因此更改一个表单中的日期将更改该字段的值下一个表单(最后一个表单给出错误Missing instance data for this datepicker
)。我在更改了ID之后尝试为表单调用set_fields
(因此在我已更改ID的所有字段上再次调用datepicker()
)但绑定仍然没有更改。我也尝试手动循环遍历带有附加日期选择器的所有元素,并再次对它们调用datepicker()
,但同样没有任何变化。
如果您需要查看代码的任何特定部分,请告诉我。
答案 0 :(得分:2)
如果您更改了元素的ID,则必须删除'hasDatepicker'类,然后使用选择器重新初始化datepicker。
示例:
$(selector).removeClass('hasDatepicker');
$(selector).datepicker({
changeMonth: true,
changeYear: true
});
答案 1 :(得分:0)
我最终找到了解决方案https://regex101.com/r/tD0dU9/6。问题是,当字段添加了datepickers时,该字段将被赋予hasDatepicker
类。如果您尝试在该字段上重新初始化datepicker,如果该字段已经具有hasDatepicker
类,它将忽略它。所以我只是从我想要重新初始化的每个元素中删除了该类,然后调用了我的set_fields
函数并且它有效!