Jquery 更改元素ID时,日期选择器将丢失绑定
我在表单集中使用jQuery日期选择器,我们可以在其中添加和删除表单。在添加新表单时,我在Jquery 更改元素ID时,日期选择器将丢失绑定,jquery,forms,jquery-ui,datepicker,jquery-ui-datepicker,Jquery,Forms,Jquery Ui,Datepicker,Jquery Ui Datepicker,我在表单集中使用jQuery日期选择器,我们可以在其中添加和删除表单。在添加新表单时,我在表单原型中添加了一个设置字段函数,该函数将日期选择器附加到新字段,效果很好 但是,在删除表单时,我会从DOM中完全删除所选表单,并更新其他表单的ID,以便它们连续编号(因此后端可以期望给定数量的连续编号表单,而不是维护“已删除”列表) 我遇到的问题是,当我删除一个表单而其余表单的ID发生更改时,日期选择器的绑定保留在下一个表单上,因此在一个表单中更改日期将更改下一个表单中字段的值(最后一个表单给出错误此日期
表单
原型中添加了一个设置字段
函数,该函数将日期选择器附加到新字段,效果很好
但是,在删除表单时,我会从DOM中完全删除所选表单,并更新其他表单的ID,以便它们连续编号(因此后端可以期望给定数量的连续编号表单,而不是维护“已删除”列表)
我遇到的问题是,当我删除一个表单而其余表单的ID发生更改时,日期选择器的绑定保留在下一个表单上,因此在一个表单中更改日期将更改下一个表单中字段的值(最后一个表单给出错误此日期选择器缺少实例数据)。在我更改ID后,我尝试调用表单的set\u fields
(因此在我更改ID的所有字段上再次调用datepicker()
),但绑定仍然没有更改。我还尝试手动循环使用附加日期选择器的所有元素,并再次对它们调用datepicker()
,但仍然没有任何变化
如果您需要查看代码的任何特定部分,请告诉我。我最终找到了解决方案。问题是,当字段添加了日期选择器时,该字段将被赋予一个hasDatepicker
类。如果随后尝试重新初始化该字段上的日期选择器,则如果该字段已具有hasDatepicker
类,则该字段将忽略它。因此,我只是从我想要重新初始化的每个元素中删除了这个类,然后调用了我的set\u fields
函数,它成功了 如果更改元素的id,则必须删除“hasDatepicker”类,然后使用选择器重新初始化datepicker
示例:
$(选择器).removeClass('hasDatepicker');
$(选择器).日期选择器({
变化月:对,
变化年:对
});
很难说没有看到您的代码,但是将id重新分配给DOM元素听起来不是正确的方法。也许您想切换类?