在jQuery UI datepicker中设置minDate时,如何不覆盖字段的值?

时间:2018-06-26 09:30:22

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

我正在尝试配置minDate日期选择器中的#start_date's,而不覆盖输入值本身。例如,#start_date已经具有01.06.2018的值,并且当某人选择将字段设置为  等于或高于今天。问题是,当我使用下面的代码时,该字段中的输入会自动更改为今天。我希望该字段保持不变,直到我选择一个日期选择器被限制为等于或大于今天的新日期为止。

minDate

我也尝试过:

$("#start_date").datepicker("option",{
  minDate: new Date()
});

并销毁并重新创建日期选择器。

我想出了这个解决方案,但我不愿使用它,因为它并不美观:

$("#start_date").datepicker({ minDate: 0});

我正在使用jQuery-ui-1.10.3。

1 个答案:

答案 0 :(得分:0)

如果我正确地理解了您,除非您单击任何日期,否则不要在打开日期选择器时更改输入字段中的日期。

如果是正确的话,除了将spandiv等输入以外,还有一种方法将日期选择器绑定到其他元素,然后使其初始隐藏并通过绑定{{1 }}事件用于输入,甚至使用click来打开日期选择器的图标,重要的是,您必须使用datepicker的$(element).toggle()事件将值手动分配给输入字段案件。

查看下面我创建的一个演示,您甚至可以单击图标或输入字段来打开日期选择器,但是直到您单击任何日期,它都不会更改输入字段内的日期。默认情况下,我在输入字段中添加了一个较旧的日期,以便您可以单击它,并看到它保持不变,直到您进行更改

onSelect
$("#span-trigger").datepicker({
  minDate: new Date(),
  onSelect: function(date) {
    $("#date-field").val(date);
  }
}).hide();

$(".fa-calendar,#date-field").on("click", function() {
  $("#span-trigger").toggle();
});
#span-trigger {
  position: absolute;
}