2013-05-21 48 views
1

在GWT中,我想處理點擊事件,但只有當用戶點擊一天。 有一個valueChangeHandler,但當值更改時會觸發,所以當我在同一天點擊兩次時,它會觸發一次。GWT - DatePicker當天的點擊事件

其他選項是使用addHandler或addDomHandler,我可以在其中添加ClickHandler,但它始終會觸發,無論是單擊一天還是傳遞給其他月份。

這兩個選項對我來說都不起作用。 任何想法如何做到這一點?

回答

0

首先,你應該描述更多細節。我不知道你真正想做什麼。 在這裏我的建議。 (1)

(1)。使用Cookies保存當前使用用戶的信息並將過期日設置爲1天。

(2)。不要使用addNewHandler。您應該使用一個處理程序實例的全局變量並將其初始化爲NULL。起初對此,你會初始化它。這可能只創建一次,你可以檢查它是否爲NULL。例如:

private CloseHandler handler; 
....... 
     if (handler == null) { 
     handler = new CloseHandler<PopupPanel>() { 
      public void onClose(final CloseEvent<PopupPanel> event) { 
       ........ 
      } 
     }; 
    } 

(3)。您也可以像使用簡單處理程序一樣使用簡單處理程序,如果觸發事件,則使用當前時間和唯一值(例如:登錄user.etc的序列)保存在地圖中。當再次擊中它時,你會回顧並匹配當前和以前的時間。

對您有用..

+0

對不起..我說的是小部件稱爲DatePicker的(這有點像日曆),我要處理的事件,當用戶點擊它,但只有當他點擊了一天。 例如,我有這個小部件。用戶點擊一天,比我向他展示一些彈出。當他點擊小部件,但不是一天..例如,當他傳遞到下個月,我不顯示彈出。 – dzuma

+0

哦!抱歉。現在我知道你的意思是com.google.gwt.user.datepicker.client.DateBox。 (1)。點擊或關注DateBox小部件(2)。點擊從DateBox wiget彈出的那一天。我對嗎 ? – Cataclysm

+0

[GWT:延長DatePicker/CalendarView](http://ctasada.blogspot.com/2010/08/gwt-extend-datepickercalendarview.html)。這可能對你有用。 – Cataclysm

0

您還可以添加您DateBox.getDatePicker處理程序()和你的DateBox.getTextBox()。 您可以添加另一個處理程序爲這樣的...

 dateBox.addHandler(new ClickHandler() { 

    public void onClick(ClickEvent event) { 
    Window.alert("click"); 
    } 
    }, ClickEvent.getType()); 
+1

上述解決方案不起作用。點擊事件選擇日期不會被解僱。 – RAS

1

使用addvalueChangeHandler那之後將該值設置爲別的東西。這是一種黑客攻擊,但它對我很有用。

calendarWidget.addValueChangeHandler(new ValueChangeHandler<Date>() { 
    @Override 
    public void onValueChange(ValueChangeEvent<Date> event) { 
     calendarWidget.setValue(new Date(0)); 
    } 
}