日期范围的jQueryUI datepicker无法验证何时使用键盘清除日期文本框

时间:2011-11-11 12:40:50

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

我正在使用jqueryUI datepicker作为日期范围,如此demo。在以下情况中,这无法验证To作为From的未来日期:

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

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

  3. 现在转到'TO'datepicker检查2011年11月.11 / 11/2011之前的所有日期仍然被禁用,这不是必需的行为。

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

1 个答案:

答案 0 :(得分:1)

这是因为设置minDatemaxDate的逻辑位于select事件侦听器中(当您从datepicker字段中完全删除日期时,它不会被触发) 。您可以绑定到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/