jQuery datepicker中年份下拉滚动条的问题

时间:2010-10-29 19:43:25

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

我正在使用jQuery日期选择器来选择申请人的出生日期,但申请人的年龄必须限制在21到100年之间。

为了使选择相对容易,我打开了月份和年份下拉框,并且在英国我已将其本地化。

<script type="text/javascript">
$(function () {
    $(".dp1").datepicker({ changeMonth: true, changeYear: true, dateFormat: 'd MM yy', minDate: '-100y', maxDate: '-21y' });
});

文本框的ASP.NET MVC2 VB.NET代码如下:

<%: Html.TextBox("", If(DirectCast(Model, DateTime) = DateTime.MinValue, String.Empty, ViewData.TemplateInfo.FormattedModelValue), New With {.class = "dp1"})%>

这很好,但年份下拉列表只显示有限的值范围,没有滚动条表示年份列表更长,但滚动条滑块的大小并未给出整个范围的任何视觉线索:

alt text

如果您单击最高值然后关闭下拉列表,则下次打开它时会显示更多值:

alt text

这是非显而易见的行为,我偶然偶然发现了它。是否有任何方法可以始终显示滚动条并且滑块大小与范围成反比?如果没有,推荐使用其他几个月的选择方法(实际上是99年就可以)?

我正在使用的记录:

  • 的jquery-UI-1.8.5
  • 的jquery-1.4.1

由于

克里斯平

3 个答案:

答案 0 :(得分:26)

尝试同时设置yearRange选项(这将设置年份下拉框中的年份范围)。您可以将其设置为 yearRange:“ - 100:-21”。请注意,单独设置yearRange不会影响允许用户选择的实际日期(您仍需要设置minDate和maxDate)。

答案 1 :(得分:6)

以下内容将设定从1970年到当年的年份范围,并处理滚动问题。

.datepicker({yearRange: "1970:+nn"});

答案 2 :(得分:0)

在BDP中选择年份时向上滚动:BasicDatePicker,并使用此代码,因为再次设置相同的位置

<script>
  function SetScrollPostion() {
      var scrollPos = $(window).scrollTop();
      setTimeout(function () {
          window.scrollTo(0, scrollPos);
          $(".bdpYearSelectorImg").click(function () {
              SetScrollPostion();
          });
      }, 1)
  }

  $(".bdpButton").click(function () {
      $("#yearSelector").click(function () {
          $(".bdpYearSelectorImg").click(function () {
              SetScrollPostion();
          });
      });
  });
</script>