在JQuery DatePicker中更改minDate选项不起作用

时间:2009-05-11 09:04:27

标签: jquery-ui datepicker

我已按如下方式声明日期选择器实例:

    $("#datePickerId").datepicker(
    { dateFormat: 'DD, d MM yy',
      minDate: 0,
      showOn: 'button',
      buttonImage: '../../images/calendar.gif',
      buttonImageOnly: true,
      hideIfNoPrevNext: true
    }
   );

我现在想要更改为minDate选项,所以我这样做:

$('#datePickerId').datepicker('option', 'minDate', 3);

但没有任何反应。我想做其他事吗?还有其他可能的原因吗?

7 个答案:

答案 0 :(得分:61)

如何动态更改minDate(初始化后)

上面的答案解决了如何在init设置默认的minDate,但问题实际上是如何动态改变minDate,下面我还阐明了如何设置默认的minDate。

原始问题的所有错误都是设置的minDate值应该是一个字符串(不要忘记引号):

$('#datePickerId').datepicker('option', 'minDate', '3');

minDate也接受一个日期对象,一个常见的用途是设置一个你想要计算的结束日期,所以这样的东西可能有用:

$('#datePickerId').datepicker(
    'option', 'minDate', new Date($(".datePop.start").val())
);

如何设置默认minDate(初始化)

回答这个问题以获得最佳实践; minDate选项需要以下之一:

  1. 当前dateFormat中的字符串OR
  2. 从今天开始的天数(例如+7)或
  3. 值和句点的字符串('y'表示年份,'m'表示月份,'w'表示 几周,'d'天,例如'-1y -1m')
  4. @bogart将字符串设置为“0”是一个解决方案,因为它满足上面的选项2

    $('#datePickerId').datepicker('minDate': '3');
    

    jQuery UI docs for minDate

答案 1 :(得分:25)

德拉科,

你可以这样做:

$("#datePickerId").datepicker(
    { dateFormat: 'DD, d MM yy',
      minDate: new Date(2009, 10 - 1, 25), // it will set minDate from 25 October 2009
      showOn: 'button',
      buttonImage: '../../images/calendar.gif',
      buttonImageOnly: true,
      hideIfNoPrevNext: true
    }
   );

记得在月之后写-1(例如,对于6月是 - > 6 -1)

答案 2 :(得分:23)

将minDate用作字符串:

$('#datePickerId').datepicker({minDate: '0'});

这将在今天设定为最小可选日期。

答案 3 :(得分:4)

动态更改minDate

.datepicker("destroy")

例如

<script>
    $(function() {
      $( "#datepicker" ).datepicker("destroy");
      $( "#datepicker" ).datepicker();
    });
  </script>

  <p>Date: <input type="text" id="datepicker" /></p>

答案 4 :(得分:2)

假设我们有两个日期选择字段,field1和field2。 field2 date取决于field1

$('#field2').datepicker();
$('#field1').datepicker({
  onSelect: function(dateText, inst) {
    $('#field2').val("");
    $('#field2').datepicker("option", "minDate", new Date(dateText));
  }
});

答案 5 :(得分:2)

无需销毁当前实例,只需刷新即可。

$('#datepicker')
    .datepicker('option', 'minDate', new Date)
    .datepicker('refresh');

答案 6 :(得分:1)

月份从0开始。 0 = 1月, 1 = 2月, 2 = 3月, ... 11 = 12月。