【问题标题】:jQueryUI DatePicker YearRange and ChangeYear problemsjQueryUI DatePicker YearRange 和 ChangeYear 问题
【发布时间】:2011-05-29 11:10:22
【问题描述】:

我在申请表上有一个日期选择器。我们只允许出生日期在特定年龄范围内的申请。我启用了 ChangeYear 并将 YearRange 设置为“-65:-16”。我遇到的问题如下:

1 - 当我选择一个日期而没有先在年份下拉列表中选择某些内容时,我得到了正确的月份和日期,但我得到的是 2016 年。

2 - 为了解决这个问题,我将 YearRange 设置为“n-65:n-16”。这会导致年份下拉列表仅显示当前年份(2010 年)。更奇怪的是,如果你选择一个日期,你仍然会得到正确的月份和日期,以及 2016 年。

这是我用来设置日期选择器的代码:

    <script type="text/javascript">
    $(document).ready(function (e) {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

        function EndRequestHandler(sender, args) {
            $(function () {
                $("#DateOfBirth").datepicker({ yearRange: '-65:-13', changeMonth: true, changeYear: true, defaultDate: '1-1-1994', dateFormat: 'mm-dd-yy' })
            });
        }

        $(function () {
            $("#DateOfBirth").datepicker({ yearRange: '-65:-13', changeMonth: true, changeYear: true, defaultDate: '1-1-1994', dateFormat: 'mm-dd-yy' })
        });
    });
</script>

我希望这是我做错了什么,有人可以告诉我那是什么。感谢您的帮助。

【问题讨论】:

  • 您使用的是什么版本的 jQuery 和 jQuery UI?
  • 我使用的是 1.4.4 和 1.8.7,我也尝试过早期版本,结果相同。

标签: javascript jquery jquery-ui datepicker jquery-ui-plugins


【解决方案1】:

尝试使用 maxDate 和 minDate 选项,例如:

$(document).ready(function () {
    $("#datepicker").datepicker({
        yearRange: '-65:-13',
        changeMonth: true,
        changeYear: true,
        defultDate: '1-1-1994',
        dateFormat: 'mm-dd-yy',
        minDate:"-65Y",
        maxDate:"-13Y" 
    });
});

【讨论】:

    【解决方案2】:

    尝试使用实际年份值给出范围。例如

    $('.datepicker').datepicker({changeYear: true, yearRange : '1990:2010'})
    

    它们也应该适用于任何日期格式。

    【讨论】:

      【解决方案3】:

      尝试在当前年份使用“c”,例如:

      $('.datepicker').datepicker({changeYear: true, yearRange : 'c-65:c+10'});
      

      更多信息请查看http://api.jqueryui.com/datepicker/#option-yearRange

      【讨论】:

      • 我已经尝试了上面的代码,但在我的情况下它不起作用。日期字段预先填充为 m/d/y ex: 01/01/xxxx 表示已添加的日期。
      【解决方案4】:

      也偶然发现了这一点。我没有进一步研究它,但调用顺序似乎有所不同。

      这行得通:

      $('DIV#startdate').datepicker( 'option', { dateFormat: 'yy-mm-dd' } );
      $('DIV#startdate').datepicker( 'setDate', '10-09-11' );
      $('DIV#startdate').datepicker( 'option', { changeYear: true } );
      

      这显示了只有 2010 年的年份列表框:

      $('DIV#startdate').datepicker( 'option', { dateFormat: 'yy-mm-dd' } );
      $('DIV#startdate').datepicker( 'option', { changeYear: true } );
      $('DIV#startdate').datepicker( 'setDate', '10-09-11' );
      

      【讨论】:

        【解决方案5】:

        检查您的 defaultDate 设置。当我将默认日期更改为指定年份范围之外的日期(即“1-1-2016”)时,我只能看到您所描述的内容。您发布的代码中的其他所有内容都对我有用。

        【讨论】:

          猜你喜欢
          • 2020-03-04
          • 1970-01-01
          • 1970-01-01
          • 2018-11-13
          • 1970-01-01
          • 2011-12-19
          • 1970-01-01
          • 1970-01-01
          • 2019-04-23
          相关资源
          最近更新 更多