禁用日期字段中的日期选择
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 日期选择器。
我正在使用一个日期字段,我想在其中将日期选择限制为距当前日期最多 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 日期选择器。