奇怪的jQuery日期选择器操作

前端之家收集整理的这篇文章主要介绍了奇怪的jQuery日期选择器操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我使用live声明一个datepicker时,似乎按预期工作,直到你改变月份.然后,如果按下月份和1899年12月,如果按下月份,则不会转到下一个月或上个月,而是跳回到1900年1月.

运用

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

有任何想法吗?

谢谢

解决方法

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

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

另一种方法 – 与现场通话保持一致 – 有专业和有效

> PRO:你只需要在代码中使用一次 – 如果你有几个ajax调用可能会添加几个动态输入,而不是多次放置它.
> CON:你正在创建一个更加耗费资源的代码,因为它会在每次输入获得焦点时运行,而不是仅仅应用.datepicker()一次.

因此,为了与现场保持一致,您可以执行以下操作:

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

在行动here中看到它

这会将.datepicker()附加到任何带有类datepicker的输入,该类没有附加.datepicker()(类hasDatePicker),这可以节省你破坏和重新创建所有日期选择器.

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

原文链接:https://www.f2er.com/jquery/177857.html

猜你在找的jQuery相关文章