4

我有这样的用户界面

在此处输入图像描述

它使用com.extjs.gxt.ui.client.widget.form.DateField 在 Date 的“更改”事件上我有一个监听器。这里的问题是

  1. 当用户更改日期然后单击外部(表单空白区域的某处)时才会触发“更改事件”
  2. 如果用户只是更改日期并且没有在表单外部单击,则不会触发更改事件。
  3. 我尝试了其他事件,例如 Focus 、 Blur 、 Valid 这些问题是日期为空(而不是新的更改值)我只想在日期值更改时调用我的代码(无需用户单击外部)

我的问题是我只想在更改日期值而不需要用户点击外部时调用我的代码......有没有办法

4

3 回答 3

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

我希望它会帮助你。

于 2013-06-13T14:16:20.617 回答
0

解决此问题的一种简单方法是在此示例中为 dateField 和 dateTextBox 注册 ClickEvent:

dateTextBox.addClickHandler(this);

然后触发 change 事件

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

这种方法唯一的事情是点击年份/嘴巴会隐藏日期选择器。

于 2014-01-24T09:13:05.960 回答
0

只要用户不离开小部件,就不会触发模糊、焦点、更改事件。如果你对值的变化感兴趣,请听keyDown(onKeyDown)事件和TriggerEvent(onTriggerEvent)。

于 2014-01-24T09:25:03.220 回答