【问题标题】:jquery ui datepicker back button jumps to 1899jquery ui datepicker后退按钮跳转到1899
【发布时间】:2023-05-04 18:31:01
【问题描述】:

我一定是错过了一些设置或什么,但是当我使用后退按钮时,日期选择器会从当前年份跳转到 1899。

有没有其他人看到并修复它?

(您可以看到我注释掉的不同组合。)

    $('.dialog-search,#from')
   .datepicker({
    defaultDate: 'c-1m',
    dateFormat: 'yymmdd',
    //changeMonth: true,
    changeYear: true,
    showAnim: 'fadeIn',
    duration: 200,
    //gotoCurrent: true, 
    showOtherMonths: true,
    selectOtherMonths: true,
    currentText: 'Now',
    shortYearCutoff: '+20',
    //showWeek: true,
    //firstDay: 1,
    numberOfMonths: 1,
    showButtonPanel: true,
    yearRange: 'c-200:c',
    onSelect: function(selectedDate,inst) {
     $('.dialog-search,#from').val(selectedDate);
    }
   });

【问题讨论】:

  • 我完全复制了所有这些,无法复制。

标签: jquery jquery-ui jquery-ui-datepicker


【解决方案1】:

当我有多个具有相同 ID 的文本输入时,我遇到了这个问题,当您在页面上有多个编辑器用于同一个模型类时,使用 MVC 框架很容易做到这一点。我通过显式指定 Id 并保留 Name 来解决它,以便模型解析在回发时起作用。

【讨论】:

  • 这就是我的原因。
【解决方案2】:

我在打电话时遇到了这个问题

$(...).datepicker('destroy')

在重新初始化日期选择器之前。

【讨论】:

  • 是的,在初始化 datepicker 之前调用 'destroy' 方法时,我也遇到过这种情况。在初始化之前删除“销毁”方法后,日期选择工作正常。
  • 对我来说也一样。在 datepicker 初始化之前调用 destroy 会导致此问题。尝试在销毁之前验证 datepicker 是否存在(例如 el.hasClass("hasDatepicker")
【解决方案3】:

当你有一个默认实例时会发生这种情况,因为在 jQuery 插件中它配置的默认日期是 1899。

当这个默认日期代码触发时,我们必须找出原因

【讨论】:

    【解决方案4】:

    我在 jsfiddle 中使用您的代码创建了一个演示,但无法重现您的问题。你能在http://jsfiddle.net/w78xX/查看吗?

    【讨论】:

    • 你是对的 - 它在那里工作正常。启动包含日期选择器的对话框的代码中必须有更深层次的东西。我看到其他一些人对此进行了投诉,但我找不到任何可能导致此问题的答案或任何提示。
    • Patrick-api,你能发布你的整个代码吗?也许我可以帮助你。
    【解决方案5】:

    我有同样的问题。 我正在使用 ajax 填充 datepicker 字段,并将它们作为弹出窗口显示在 PrettyPhoto 上。

    这是我的代码。

    $( "body" ).on( "focus", ".tarih", function() {
        //$('.tarih').datepicker('destroy');
        var i = 0;
        $('.tarih').each(function () {
            //$(this).attr("id",'date' + i).datepicker('destroy');
            $(this).attr("id",'date' + i).datepicker({
                dateFormat: "yy-mm-dd",
                firstDay: 1,
                minDate: new Date(2000, 1 - 1, 1)
            });
            i++;
        });
    });
    

    【讨论】:

      【解决方案6】:

      尝试使用: 格式:'mm/dd/yyyy hh:ii:ss P' 诀窍是保持您的日期格式与后端返回的格式相同。

      【讨论】:

      • 我们只想显示日期,而不是日期时间,我们能做什么?
      【解决方案7】:

      我遇到了同样的问题,添加 useCurrent: false 解决了它。

      .datepicker({
              useCurrent: false 
      
          });
      

      【讨论】: