【问题标题】:GWT click handler is ignored if value change handler is added to a text field如果将值更改处理程序添加到文本字段,则忽略 GWT 单击处理程序
【发布时间】:2012-06-21 08:34:27
【问题描述】:

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

我加了

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

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

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

【问题讨论】:

    标签: gwt


    【解决方案1】:

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

    在您向文本字段提供您已完成在字段中输入并想要注册更改的手势之前,不会注册值更改。我相信这个手势要么是 CR,要么是失去焦点。

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

    但是,你为什么要这样做呢?为什么不继续使用值更改处理程序?无论如何,您必须将鼠标移出文本字段才能到达鼠标按钮。

    【讨论】:

    • 问题是当我移动鼠标点击“保存”按钮时,事件更改处理程序被执行,但“按钮点击”事件丢失。所以模型得到了更新,但我必须点击“保存”两次。没有意义。我确定我没有正确使用所有这些侦听器(我的第一次 gwt 尝试)......
    猜你喜欢
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 2014-03-26
    • 2020-06-10
    • 1970-01-01
    相关资源
    最近更新 更多