我有这样的用户界面
使用 com.extjs.gxt.ui.client.widget.form.DateField 在Date的“改变”事件中,我有一个倾听者。 此处的问题是
我的问题是,我希望仅在更改日期值时调用我的代码 没有用户需要点击外部...有没有方法?< / p>
答案 0 :(得分:6)
我认为您在datefield上应用了监听器。您必须在datepicker上应用监听器,如下所示
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());
}
});
我希望它会对你有所帮助。
答案 1 :(得分:0)
解决问题的一种简单方法是在此示例中为dateField,dateTextBox注册ClickEvent:
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();
}
}
这种方法的唯一之处就是点击年份/口会隐藏日期选择器。
答案 2 :(得分:0)
只要用户没有离开窗口小部件,就不会触发模糊,焦点,更改事件。如果您对值更改感兴趣,请侦听keyDown(onKeyDown)事件和TriggerEvent(onTriggerEvent)。