2012-06-20 62 views
0

我有一个带有文本字段和禁用的“保存”按钮的GWT表单。 当用户开始在文本字段中输入任何内容时,我想启用“保存”按钮。然后单击“保存”按钮应该调用一些save()代码。如果将值更改处理程序添加到文本字段,GWT点击处理程序将被忽略

我加

  1. clickHandler事件的保存按钮。
  2. “值更改处理程序”为文本 字段以更新备份模型。不幸的是,当字段丢失FOCUS时,它只被调用 ,因此我还必须添加:
  3. KeyPressHandler到 文本字段以在用户开始键入时启用保存按钮。

所以我开始在文本字段中键入(我看到KeyPressHandler被调用并且Button变为启用状态),然后单击“保存”。

此刻,GWT激发“焦点丢失”事件,并且我的值更改处理程序被调用并且支持模型得到更新。但ClickHandler的事件会丢失!它根本不被调用。 我必须再次点击“保存”按钮,然后save()最终被调用。

回答

0

ValueChange处理程序用于检测字段值的更改。

只有在您已完成在字段中输入并且想要注册更改的文本字段提供手势之后,才会注册值更改。我相信这个姿势可能是CR或失去焦点。

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

但是,您为什么要这么做?为什么不留在价值改变处理程序?您必须将鼠标从文本字段移出才能到达鼠标按钮。

+0

问题是,当我移动鼠标点击“保存”按钮时,事件更改处理程序被执行,但“按钮点击”事件丢失。所以模型得到更新,但我必须点击“保存”两次。没有意义。我确定我没有正确使用所有这些听众(我的第一次gwt尝试)... – Alex

相关问题