2013-06-13 47 views
3

我有這樣在GXT時是更改事件解僱日期

enter image description here

一個UI,它使用com.extjs.gxt.ui.client.widget.form.DateField 「更改「日期事件我有一個聽衆。這裏的問題是

  1. 「改變」事件觸發當用戶更改日期然後單擊外(在形式上的空白區域某處)
  2. 如果用戶只是改變日期並且沒有點擊外部表單,更改事件是而不是被解僱。
  3. 我嘗試了其他事件,如焦點,模糊,與這些問題有效的是,日期來臨爲空(而不是新的更改的值)我想調用我的代碼只有當日期值更改(無需用戶需要點擊外)

我的問題是我想打電話給我的代碼只有當日期值改變用戶需要點擊之外......有什麼辦法?

回答

6

我想你申請的datefield.you聽者不得不應用在日期選擇器聽者跟隨

DateField dateField = new DateField(); 
dateField.getDatePicker().addListener(Events.Select, new Listener<DatePickerEvent>() { 

     @Override 
     public void handleEvent(DatePickerEvent be) { 
      System.out.println("Selected Date : "+be.getDate()); 
     } 
}); 

我希望它會幫助你。

+0

感謝您的幫助,但這並沒有工作\t ** // OLD CODE ** \t \t「date.addListener(Events.Change,新的監聽(){ 公共無效的handleEvent(FieldEvent定) System.out.println(「Selected Date:」+ be.getValue()); } });' \t \t // NEW CODE \t date.getDatePicker()。的addListener(Events.Select,新監聽(){ \t公共無效的handleEvent(DatePickerEvent是){ 的System.out.println(「選定日期:「+ be。GETDATE()); } }); – Lav

+0

@Lav它像一個魅力。你嘗試過類似'ValueChangeEvent.fire(dateField,event.getValue());'handleEvent'方法嗎? –

0

一個簡單的方法來解決這個問題是在這個例子中登記ClickEvent對於DateField,文字框:

dateTextBox.addClickHandler(this); 

那麼火更改事件

public void onClick(ClickEvent event) { 
    if (event.getSource().equals(datePicker)) { 
     dateTextBox.setText(DateTimeFormat.getFormat(getDateFormat()).format(datePicker.getValue())); 
     DomEvent.fireNativeEvent(Document.get().createChangeEvent(), dateTextBox); 
     datePicker.hide(); 
     } 
    } 

這種形式給出的唯一的事情就是點擊年/嘴將隱藏日期選擇器。

0

只要用戶不離開小部件,就不會觸發blur-,focus,change-event。如果您對值更改感興趣,請聽取keyDown(onKeyDown)事件和TriggerEvent(onTriggerEvent)。