更改元素ID

时间:2015-10-19 15:41:38

标签: jquery forms jquery-ui datepicker jquery-ui-datepicker

我在formset上使用jQuery datepicker,我们可以在其中添加和删除表单。添加新表单时,我在set_fields原型中添加了Form函数,该函数将日期选择器附加到新字段,这样可以正常工作。

但是,在删除表单时,我会从DOM中完全删除所选表单并更新其他表单的ID,以便它们连续编号(因此后端可以预期给定数量的连续编号表单而不是维护'已删除'列表)。

我遇到的问题是,当我删除表单并且其余表单的ID已更改时,datepickers的绑定将保留在下一个表单上,因此更改一个表单中的日期将更改该字段的值下一个表单(最后一个表单给出错误Missing instance data for this datepicker)。我在更改了ID之后尝试为表单调用set_fields(因此在我已更改ID的所有字段上再次调用datepicker())但绑定仍然没有更改。我也尝试手动循环遍历带有附加日期选择器的所有元素,并再次对它们调用datepicker(),但同样没有任何变化。

如果您需要查看代码的任何特定部分,请告诉我。

2 个答案:

答案 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函数并且它有效!

相关问题