2013-06-13 2 views
3

해고는 "변화에 com.extjs.gxt.ui.client.widget.form.DateField 를 사용하여이때 변경 이벤트 내가 가진 날짜

enter image description here

같은 UI "Date of event 나는 청취자가있다. 문제는 여기 "변경 이벤트"

  1. 사용자 변경 날짜 및 경우에만 다음 (어딘가에 형태의 빈 영역에서) 외부을 클릭 해고입니다
  2. 사용자가 단지 날짜를 변경하는 경우 그리고 외부 양식을 클릭하지 않으면 변경 이벤트는 이 아니며이 발생합니다.
  3. 나는 Focus, Blur, Valid와 같은 다른 이벤트를 시도했다. 그 문제는 날짜가 null이되고 새로운 변경된 값이 아니라는 것을 의미한다. 날짜 값이 변경 될 때만 내 코드를 호출하려고한다.

내 문제는 내가 내 코드를 호출 할 것입니다) 외부 클릭 날짜 값이 사용자없이 을 변경하는 경우에만 외부 클릭해야 ... 방법이 있나요?

답변

6

는 난 당신이 내가 당신을 도움이되기를 바랍니다

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()); 
     } 
}); 

을 따를 에 날짜 선택기에 리스너를 적용했다 datefield.you에 리스너를 적용 생각합니다.

+0

도움을 주셔서 감사합니다,하지만이 작동하지 않았다 \t ** // OLD CODE ** \t \t 'date.addListener (Events.Change, 새로운 리스너 () { 공공 무효의 handleEvent (수 FieldEvent) { System.out.println ("선택한 날짜 :"+ be.getValue()); } }); \t \t // \t date.getDatePicker().의 addListener이 (Events.Select, 새로운 리스너 () { \t 공공 무효의 handleEvent (수 DatePickerEvent) { 에서 System.out.println이 ("선택한 NEW CODE 날짜 : "+.getDate()); } }); – Lav

+0

@Lav 그것은 매력처럼 작동했습니다. 'handleEvent' 메소드 내부에서'ValueChangeEvent.fire (dateField, event.getValue()); '와 같은 것을 시도 했습니까? –

0

문제를 해결하는 쉬운 방법은이 예에서의 dateField, dateTextBox에 대한 ClickEvent 등록되어

dateTextBox.addClickHandler(this); 

다음이 aproach에 대한 유일한 일이 있다는 것입니다

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)를 수신하십시오.