2

我在这个演示中使用 jqueryUI datepicker 作为日期范围。在以下情况下,这无法将 To 验证为 From 的未来日期:

  1. 在 FROM 日期中选择 11/19/2011。现在在 TO 日期选择器中转到 2011 年 11 月,您不能选择“2011 年 11 月 19 日”之前的日期。这是很好的预期行为

  2. 现在使用鼠标将光标放在 FROM 日期选择器文本框中。选择选择的日期,即 11/19/2011 并删除,即使文本框为空。此时 2 个文本框为空。

  3. 现在转到 2011 年 11 月的“TO”日期选择器检查。2011 年 11 月 19 日之前的所有日期仍然被禁用,这不是必需的行为。

为了解决这个问题,我制作了文本框readonly,但我想要一个更好的解决方案来解决这个问题,以便用户可以用键盘输入日期以及用鼠标选择。

4

1 回答 1

1

这是因为设置minDate和的逻辑maxDate位于select事件侦听器中(当您从日期选择器字段中完全删除日期时,它不会被触发)。您可以改为绑定到change事件:

var dates = $("#from, #to").datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
}).bind("change", function() {
    var option = this.id == "from" ? "minDate" : "maxDate",
        selectedDate = this.value,
        instance = $(this).data("datepicker"),
        date = $.datepicker.parseDate(instance.settings.dateFormat ||
             $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
        dates.not(this).datepicker("option", option, date);        
});

示例:http: //jsfiddle.net/TMnRX/

于 2011-11-11T21:39:50.950 回答