当用户更改月份时,jquery datepicker 更改年份

Posted

技术标签:

【中文标题】当用户更改月份时,jquery datepicker 更改年份【英文标题】:jquery datepicker changes year when user changes month 【发布时间】:2013-11-15 05:03:56 【问题描述】:

我正在使用 jquery datepicker,但是当用户更改月份时,它会自动将年份更改为设置为最小日期的年份。 我不明白为什么会发生这种情况,而且似乎也是随机发生的。

这是我的功能:

function DatePickerShort() 
$(":input[datepicker]").each(function () 
    ShowPicker($(this));
    $(this).bind('focus', function () 
        ShowPicker($(this));
    );

);

function ShowPicker(obj) 
    if ($(obj).is('[readonly]')) 
        $(obj).datepicker('destroy');
    
    else 
        $(obj).datepicker('destroy');
        var fecha = new Date();

        $(obj).datepicker(
            changeMonth: true,
            changeYear: true,
            minDate: new Date(2000, 08, 01),
            firstDay: 1,
            dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
            dateFormat: 'dd/mm/yy',
            monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
        );
    

【问题讨论】:

你不是每次获得焦点时都重新创建日期选择器吗? 你想用你的代码实现什么?例如,您为什么不以 $("input").datepicker(); 之类的常用方式使用 datepicker? 你能创建一个 jsfiddle 吗? 【参考方案1】:

我做了很多假设,因为您确实提供了有关 html 的任何清晰度。如需更好的答案,请同时发布 html。

我认为您正在努力实现的目标: 当您专注于具有 datepicker 属性的输入元素时,您正在尝试激活 datepicker。如果它是只读元素,则不希望显示日期选择器。

你实际上在做什么: 您正在查找所有标有 datepicker 属性的输入元素并创建一个 datepicker。虽然,老实说,如果不查看您的 html,我不确定选择器是如何工作的。然后,每次输入获得焦点时,日期选择器都会被销毁,而您正在创建一个全新的选择器。当用户选择一个日期时,输入失去焦点。当日期选择器放回日期时,它会获得焦点并且新的日期选择器会再次被替换。这可能是间歇性的,具体取决于焦点事件(创建新的日期选择器)是在填充输入框之前还是之后发生的。

修复:

  $("input[datepicker]:not([readonly])").datepicker(
      changeMonth: true,
      changeYear: true,
      minDate: new Date(2000, 08, 01),
      firstDay: 1,
      dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
      dateFormat: 'dd/mm/yy',
      monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic']
  );

正如 JazZRo 在他的评论中所说,只需设置一次日期选择器。

我的偏好是使用类标记日期选择器并将其用作选择器。它表现更好,更清晰。如果可以,只需用类标记日期选择器,不要标记只读的。

请记住,如果 readonly 为 false,它仍然不会获取 datepicker,因为选择器只是检查 readonly 属性的存在(与 datepicker 属性相同)。有关示例,请参见此 JSfiddle: http://jsfiddle.net/DanCaveman/RBtY5/4/

【讨论】:

以上是关于当用户更改月份时,jquery datepicker 更改年份的主要内容,如果未能解决你的问题,请参考以下文章