禁用日期字段中的日期选择

Disabling selection of dates in a date field

我正在使用一个日期字段,我想在其中将日期选择限制为距当前日期最多 90 天。我怎样才能做到这一点?

我试过了dateField.setMaxvalue(maxDate),但我无法限制选择

我认为 GWT 日期选择器不支持此功能。 您可以使用像 GWT-Bootstrap3 这样的库,它确实拥有所有这些 (https://gwtbootstrap3.github.io/gwtbootstrap3-demo/#dateTimePicker)。

或者如果选择超出有效范围,您可以侦听事件和用户所做的回滚更改,并向用户显示一条消息。

我支持@Knarf 给出的建议。您可以使用 GWT DatePicker class 并监听 ValueChangeEvent,在 ValueChangeHandler 中,您可以使用逻辑来检查所选日期是否在您的范围内 - 如果不在,您可以在 UI 上显示一条消息供用户重新选择日期范围内的日期(根据您的要求)。

    DatePicker datePicker = new DatePicker();
    final Label text = new Label();

    // Listen for a ValueChangeEvent and implement a ValueChangeHandler on your datePicker element
    datePicker.addValueChangeHandler(new ValueChangeHandler<Date>() {
      public void onValueChange(ValueChangeEvent<Date> valueChangeEvent) {
        Date inputDate = valueChangeEvent.getValue();

        // Put your logic to test whether the selected date is within your range
        String dateString = DateTimeFormat.getMediumDateFormat().format(inputDate);
        text.setText(dateString);
      }
    });

希望对您有所帮助!

您可以将 ShowRangeHandler 添加到您的日期选择器。这是一个将 datePicker 限制为过去日期的示例,您可以将其调整为限制为 90 天:

datePicker.addShowRangeHandler(new ShowRangeHandler<Date>() {
        @Override
        public void onShowRange(ShowRangeEvent<Date> event) {
            Date today = new Date();
            Date date = new Date(event.getStart().getTime());
            while (date.before(event.getEnd())) {
                if (date.after(today) && datePicker.isDateVisible(date)) {
                    datePicker.setTransientEnabledOnDates(false, date);
                }

                CalendarUtil.addDaysToDate(date, 1);
            }
        }
    });

上述解决方案完全符合我的预期。感谢 you.I 在 link (https://gwtbootstrap3.github.io/gwtbootstrap3-demo/#dateTimePicker) 中使用了 bootstrap 日期选择器。