Я использую поле даты, в котором я хочу ограничить выбор даты до 90 дней с текущей даты. Как я могу достичь этого?Отключение выбора дат в поле даты
Я попытался dateField.setMaxvalue(maxDate)
, но я не в состоянии ограничить выбор
Я использую поле даты, в котором я хочу ограничить выбор даты до 90 дней с текущей даты. Как я могу достичь этого?Отключение выбора дат в поле даты
Я попытался dateField.setMaxvalue(maxDate)
, но я не в состоянии ограничить выбор
Я не думаю, что DatePicker GWT имеет поддержку для этого. Вы можете использовать библиотеку GWT-Bootstrap3, которая имеет все это (https://gwtbootstrap3.github.io/gwtbootstrap3-demo/#dateTimePicker).
Или вы можете прослушивать изменения событий и отката, сделанные пользователем, если выбор был вне допустимого диапазона и отображать сообщение пользователю.
спасибо @knarf. это сработало!!!! –
Я второй, чтобы предложить @Knarf. Вы можете использовать класс GWT DatePicker и прослушивать ValueChangeEvent и в ValueChangeHandler, вы можете поместить свою логику, чтобы проверить, находится ли выбранная дата в пределах вашего диапазона - если нет, вы можете показать сообщение в своем пользовательском интерфейсе, чтобы пользователь мог повторно выбрать дату в диапазон дат (согласно вашему требованию).
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. Это пример, чтобы ограничить 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);
}
}
});
Вышеуказанные решения работали именно так, как я expected..Thank you.I используется bootstrap datepicker по ссылке (https://gwtbootstrap3.github.io/gwtbootstrap3-demo/#dateTimePicker).
Я считаю, что у вас есть больше шансов получить ответ, если вы разместите код, который у вас есть. –
, если это ваша ячейка ввода, чем может быть, вы можете расширить ее и переопределить метод onBrowserEvent() и isEditing(), чтобы обеспечить вашу логику, чтобы пользователь не мог ввести более 90 дней. – Brijesh