jquery - 奇怪的 jQuery 日期选择器操作

标签 jquery jquery-ui

当我用 live 声明日期选择器时,似乎会按预期工作,直到您更改月份。然后,如果您按向前月份,它会跳回到 1900 年 1 月,如果您按向后月份,它不会跳到下个月或上个月,而是跳回 1899 年 12 月。

使用

$('.datepicker').live('focus', function () {
  $(this).datepicker('destroy').datepicker();
});

有什么想法吗?

谢谢

最佳答案

我认为您看到问题的一个可能原因是,当您使用焦点附加到输入时,您会破坏日期选择器并重新创建一个。但是,当您单击输入时,它会运行,因此会销毁日期选择器并显示一个。但是,当您单击下一个或上一个时,您最初会失去对输入的焦点,但日期选择器脚本将“重新聚焦”它,从而触发销毁并重新创建日期选择器。

我假设您正在使用 live 将日期选择器附加到动态输入 - 您始终可以使用 $('.datepicker').not('.hasDatePicker').datepicker(); 调用您的success:......您的 ajax 调用的回调,我假设您正在创建新的输入。这将产生添加 .datepicker() 的影响任何具有类 datepicker 的输入项还没有 .datepicker()添加。 (添加了 .datepicker() 的输入也将添加类 hasDatePicker)

<小时/>

另一种方法 - 与实时通话保持一致 - 有优点和缺点

  • PRO:您只需要在代码中使用一次 - 如果您有多个可能会添加多个动态输入的 ajax 调用,则无需多次放置它。
  • CON:您正在创建更多资源消耗的代码,因为每次输入接收焦点时它都会运行,而不是仅仅应用 .datepicker()一次。

因此,为了保持实时状态,您可以执行以下操作:

$('.datepicker').live('focus', function () {
    $(this).not('.hasDatePicker').datepicker();
});

查看实际效果 here

这将附加一个 .datepicker()任何具有类 datepicker 的输入其中尚未已经获得 .datepicker()附加(class hasDatePicker),这应该可以避免您销毁并重新创建所有日期选择器。

这与 @Andrew Whitaker 的解决方案的作用相同

关于jquery - 奇怪的 jQuery 日期选择器操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4987293/

相关文章:

javascript - 使用 jQuery 制作窗口动画

javascript - jQuery:有没有办法为 jQuery Datepicker 转换日期?

javascript - 如何在鼠标功能下获取顶级对象?

php - Jquery 我想要在每次点击时一次又一次地产生相同的效果

jquery - CSS/HTML 弹出窗口不会关闭

Jquery - 提交功能中的表单数据

javascript - 日期时间选择器上的更改功能无法正常工作

javascript - Jquery特选

javascript - 使用带有 text() 的子字符串来删除 html 标签?

javascript - 使用 AJAX 在点击时执行简单的 mysqli 查询