Javascript jQuery DatePicker上的Destroy方法删除了DatePicker,但当我重新实例化一个新的DatePicker时,以前选择的日期值仍然处于选中状态

Javascript jQuery DatePicker上的Destroy方法删除了DatePicker,但当我重新实例化一个新的DatePicker时,以前选择的日期值仍然处于选中状态,javascript,jquery,jquery-plugins,datepicker,Javascript,Jquery,Jquery Plugins,Datepicker,我创建了一个演示,用一个名为Zebra Datepicker的jQuery库来显示我遇到的问题 斑马日期选择器文档: 斑马日期采集器GitHub: 我的演示演示了如何: 创建一个DatePicker实例 选择一个日期值 销毁日期选择器实例 创建日期选择器的新实例 选择一个新的日期值 问题: 问题是,销毁日期选择器似乎不会销毁以前选择的日期值!因此,当实例化一个新的日期选择器时,它会选择上一个日期值而不是新值 我真的需要一些专家的帮助,因为这对我修复将项目任务记录加载到Modal DIV中的项

我创建了一个演示,用一个名为Zebra Datepicker的jQuery库来显示我遇到的问题

斑马日期选择器文档: 斑马日期采集器GitHub:

我的演示演示了如何:

  • 创建一个DatePicker实例
  • 选择一个日期值
  • 销毁日期选择器实例
  • 创建日期选择器的新实例
  • 选择一个新的日期值
问题:

问题是,销毁日期选择器似乎不会销毁以前选择的日期值!因此,当实例化一个新的日期选择器时,它会选择上一个日期值而不是新值

我真的需要一些专家的帮助,因为这对我修复将项目任务记录加载到Modal DIV中的项目至关重要。我的任务记录都在单个Modal的DOM中共享HTML,只需替换任务的占位符变量,然后在Modal关闭时重新设置它们,以便下一个任务反复执行该过程

我的演示:

如果你在我的演示中遵循这些步骤,你就会明白我的意思

  • 单击日期范围以显示日期选择器日历,然后单击日期2015-05-30
  • 单击销毁日期选择器按钮
  • 单击Date Span,它将显示DatePicker已丢失,因为我们已将其销毁
  • 现在点击更新日期选择器至2015-05-24按钮,将日期跨度值设置为新的日期为2015-05-24。当我们再次实例化DatePicker插件时,它应该在SPAN中获取这个新的日期值,并将DatePicker设置为这个日期
  • 现在单击“构建新日期选择器”按钮,该按钮将实例化一个新的日期选择器
  • 现在单击日期范围文本:2015-05-24再次显示日期选择器日历
  • 您现在应该看到,原始的第30天2015-05-30在日期选择器中被选中,尽管它现在应该选择我们的日期值2015-05-24,因为我们
    destroy()
    在销毁旧日期选择器后重新实例化了一个新日期选择器
    显然,销毁方法没有完全销毁,还是发生了其他事情?有没有办法解决这个问题

    实际Zebra Datepicker库的destroy()方法的源代码: 位于此处


    我发现了问题。您需要更改以下内容:

    $('#updateDate').on('click', function(){
        $('#task-modal-due-date-span').text('2015-05-24');
    }); 
    
    为此:

    $('#updateDate').on('click', function(){
        $('#task-modal-due-date-span').text('2015-05-24').val('2015-05-24');
    }); 
    

    原因是,当您重建新的DatePicker控件时,它查看的是span的,而不是span的文本。(注意:通常您会将日期选择器附加到“input”元素,而不是“span”元素。)

    我没有解决方案,只有一条注释。。。这个问题的答案比你描述的要简单得多。无需销毁和重新创建选择器。只需执行以下操作:1.)加载页面,2.)单击范围以打开日期选择器,3.)在选择器中选择2015年5月30日,4.)单击按钮“将日期选择器SPAN val更新为2015-05-24,最后更新5。)再次单击SPAN以打开日期选择器。请注意,日期设置为5/30而不是5/24。@RajeevGoel谢谢你的评论,我想你可能误解了一点(可能是我的错),但我需要销毁它并重新设置,因为我将在模式中打开不同的数据。如果您按照我描述的步骤操作,您将看到它不会在该过程下更新,这是加载不同模态时必须采取的过程。我理解您需要销毁它并为您的场景重新构建日期选择器。我想说的是,即使您不销毁/重建日期选择器,您报告的bug也会复制(显示自己)。换句话说,你不必为了见证这个bug而破坏/重建DatePicker。这可能是我问题的解决方案,所以谢谢你!太好了,很高兴我能帮忙。请将我的帖子标记为已接受答案。我花了很多时间在这个上面。
    $('#updateDate').on('click', function(){
        $('#task-modal-due-date-span').text('2015-05-24').val('2015-05-24');
    });