首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT DateBox -禁用特定日期

GWT DateBox -禁用特定日期
EN

Stack Overflow用户
提问于 2014-05-30 15:04:17
回答 2查看 2.3K关注 0票数 0

我想在“日期”框中禁用特定日期。我用这段代码试过了,但是指定的日期(当前日期)没有被禁用。

代码语言:javascript
复制
final DateBox dateBox = new DateBox();
dateBox.getDatePicker().addShowRangeHandler(new ShowRangeHandler<Date>() {

    @Override
    public void onShowRange(final ShowRangeEvent<Date> event) {
        List<Date> disabledDates = new ArrayList<Date>();
        disabledDates.add(new Date());
        dateBox.getDatePicker().setTransientEnabledOnDates(false, disabledDates);
    }
});

还有别的办法吗?

编辑:以apanizo为例,29.5天看起来灰蒙蒙的,但还是可以点击的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-30 15:24:53

真的很抱歉,我没有测试我最后一个答案的代码。

我刚刚尝试过,您的代码对我有用,我所做的唯一的事情就是通过setTransientEnabledOnDates(false, dateToDisable);方法传递我不想要的所有日期。

示例:

代码语言:javascript
复制
public void onModuleLoad() {
    final DateBox dateBox = new DateBox();

    dateBox.getDatePicker().addShowRangeHandler(new ShowRangeHandler<Date>() {
        @Override
        public void onShowRange(final ShowRangeEvent<Date> dateShowRangeEvent) {
            final Date today = new Date(); //30 May 3014
            final Date yesterday = new Date(today.getTime()- 24*60*60*1000);

            //disabling yesterday - 29 May of 2014
            dateBox.getDatePicker().setTransientEnabledOnDates(false, yesterday);

        }
    });

    RootPanel.get().add(dateBox);

  }

如果要在禁用日期上禁用单击事件,则这是一个已解决且未传递的错误。

请参阅:https://code.google.com/p/google-web-toolkit/issues/detail?id=7876

我认为在GWT的2.7版本中,它将被发布,同时您可以在第77行com.google.gwt.user.datepicker.client.CellGridImpl中引入它:

代码语言:javascript
复制
 addDomHandler(new ClickHandler() {
     @Override
     public void onClick(ClickEvent event) {
       if (isActive(Cell.this)) {
         setSelected(Cell.this);
       }
     }
  }, ClickEvent.getType());

细节在这里

票数 1
EN

Stack Overflow用户

发布于 2014-05-30 22:05:05

只需在日期选择器上添加一个值更改的侦听器,以侦听日期中的任何更改。

例如,如果不允许当前日期,并且选择了当前日期,那么只需放弃更改并恢复到以前的日期,或者在需要时也显示警告消息,并为当前日期添加样式,使其看起来是禁用的。

在这里,日期时间格式仅用于检查日期,检查日期时丢弃时间。

样本代码:

代码语言:javascript
复制
private Date prevDate;
...

final DateBox dateBox = new DateBox();
final DateTimeFormat dateTimeFormat=DateTimeFormat.getFormat("MM/dd/yyyy");

dateBox.getDatePicker().addValueChangeHandler(new ValueChangeHandler<Date>() {

    @Override
    public void onValueChange(ValueChangeEvent<Date> event) {
        if (dateTimeFormat.format(event.getValue()).equals(dateTimeFormat.format(new Date()))) {
            dateBox.setValue(prevDate);
            // show warning message here
        }else{
            prevDate=event.getValue();
        }
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23957705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档