Javascript 动态重新加载日期选择器

Javascript 动态重新加载日期选择器,javascript,jquery,json,datepicker,clone,Javascript,Jquery,Json,Datepicker,Clone,好的,我有一个javascript对象来控制页面上的元素,比如加载html、撤销、重做等 当我撤销时,它会从应该是日期选择器的输入中删除日期选择器 我的代码位于此处: 为了好玩,我把代码改成了内联JSON 它有6列,其中两列是带有开始日期和过期日期的日期选择器 当用户单击undo或undo all时,日期选择器不再工作 有人能帮帮我吗 谢谢:-D 已更新 仍然存在问题,但我稍微改变了一下小提琴我解决了问题: 我在两次撤消单击中都添加了这一行: self.refreshDatePickers();

好的,我有一个javascript对象来控制页面上的元素,比如加载html、撤销、重做等

当我撤销时,它会从应该是日期选择器的输入中删除日期选择器

我的代码位于此处:

为了好玩,我把代码改成了内联JSON

它有6列,其中两列是带有开始日期和过期日期的日期选择器

当用户单击undo或undo all时,日期选择器不再工作

有人能帮帮我吗

谢谢:-D

已更新

仍然存在问题,但我稍微改变了一下小提琴

我解决了问题:

我在两次撤消单击中都添加了这一行:

self.refreshDatePickers();
在创建行时,我将此添加到过期:

case 'expiration':
     td.append($('<input>',
          {value: i, name: index+"["+topIndex+"]", 
               type: 'text', size: 30, id: 'to['+topIndex+']', 
               'class': 'dp', 'index': topIndex}));
     break;

这与使用
clone
函数而不将
withDataAndEvents
参数设置为true有关。然而,即使将该属性设置为true也不能解决问题。将datepicker初始化代码重构成一个单独的函数,并在执行撤消操作后运行,这样做可能更安全。@Andrew--如何?可能有许多行需要重做。你能用小提琴给我演示一下吗?你只是在调用
$('#page')。remove()将终止所有事件处理程序。起初我认为只需添加$('input.hasDatepicker').datepicker();在你的撤销方法中会有帮助,但显然没有。JSFIDLE存在一些延迟问题,因此我无法继续调试,但祝您好运。您必须以某种方式进一步杀死事件处理程序。(编辑:看起来@Andrew也有同样的想法)@Milimetric,如果可以的话,你能试着让它工作吗?我已经在这方面工作了几个小时,但没有结果,也许新的大脑可能会有所帮助……如果JSFIDLE开始表现自己,我会尝试:)休息一下,这通常会有帮助:)
refreshDatePickers: function(){
    var self = this;
    $.each($('.dp'),function(){
        var index = $(this).attr('index');
        var tr = $(this).parent().parent();
        $( "input[name='startDate["+index+"]'], input[name='expiration["+index+"]']", tr ).removeClass("hasDatepicker");
        self.createDatePicker(index, tr);
    })
}