如何使用com.google.gwt.user.datepicker.client.DateBox限制可用的日期范围
我需要限制用户可以从com.google.gwt.user.datepicker.client.DateBox
选择的Dates
。
我似乎无法弄清楚如何限制最小Date
因此他们无法选择过去的日期。
如果我不能用com.google.gwt.user.datepicker.client.DateBox
执行此操作,是否有一个替代DateBox
小部件,这将允许我这种灵活性?
根据我收到的建议,我想出的是将可选日期限制在当天和之后。 这适用于GWT 2.1.1
final DateBox dateBox = new DateBox(); dateBox.addValueChangeHandler(new ValueChangeHandler() { @Override public void onValueChange(final ValueChangeEvent dateValueChangeEvent) { if (dateValueChangeEvent.getValue().before(today())) { dateBox.setValue(today(), false); } } }); dateBox.getDatePicker().addShowRangeHandler(new ShowRangeHandler () { @Override public void onShowRange(final ShowRangeEvent dateShowRangeEvent) { final Date today = today(); Date d = zeroTime(dateShowRangeEvent.getStart()); while (d.before(today)) { dateBox.getDatePicker().setTransientEnabledOnDates(false, d); d = nextDay(d); } } });
为了完整起见,这里是操作日期的static
帮助方法:
private static Date today() { return zeroTime(new Date()); } /** this is important to get rid of the time portion, including ms */ private static Date zeroTime(final Date date) { return DateTimeFormat.getFormat("yyyyMMdd").parse(DateTimeFormat.getFormat("yyyyMMdd").format(date)); } private static Date nextDay(final Date date) { return zeroTime(new Date(date.getTime() + 24 * 60 * 60 * 1000)); }
我在这里猜测你可能需要使用addValueChangeHandler。 一个例子:
datebox.addValueChangeHandler(new ValueChangeHandler() { public void onValueChange(ValueChangeEvent event) { Date date = event.getValue(); if (date.before(new Date())) { fromDatePicker.setValue(new Date()); } } });
在这里,当用户以某种方式选择过去的日期时,它会自动将其设置为当前日期(或任何符合您需求的日期)。