如果将值更改处理程序添加到文本字段,则忽略GWT单击处理程序

时间:2012-06-20 21:23:35

标签: gwt

我有一个带有文本字段和禁用“保存”按钮的GWT表单。 当用户开始在文本字段中键入任何内容时,我想启用“保存”按钮。然后单击“保存”按钮就可以调用一些save()代码。

我添加了

  1. ClickHandler到“保存”按钮。
  2. 文本中的“值更改处理程序” 字段以更新支持模型。不幸的是,它只被调用 当场地失去FOCUS时,我也不得不补充:
  3. KeyPressHandler来 用户开始输入时启用“保存”按钮的文本字段。
  4. 所以我开始输入文本字段(我看到KeyPressHandler被调用,Button变为启用状态),然后我点击“保存”。

    此时GWT触发“焦点丢失”事件并调用我的值更改处理程序并更新支持模型。但是ClickHandler的事件会丢失!它根本就没有被调用。 我必须再次单击“保存”按钮,然后最后调用save()。

1 个答案:

答案 0 :(得分:0)

ValueChange处理程序用于检测字段值的变化。

在您向文本字段提供手势并且您已完成在字段中键入并想要注册更改之前,不会注册值更改。我相信手势可能是CR或失去焦点。

OTOH,你可能希望附加到文本字段的处理程序是一个键盘处理程序(http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/event/dom/client/KeyUpHandler.html),因此在每个键盘上你的代码都可以检查刚刚输入的键的值

但是,你为什么要那样做呢?为什么不留下价值变化处理程序?您必须将鼠标移开文本字段才能到达鼠标按钮。