8

给定以下代码:

    TextBox tb = new TextBox();
    tb.addValueChangeHandler(new ValueChangeHandler<String>() {

        @Override
        public void onValueChange(ValueChangeEvent<String> event) {
            Window.alert(event.getValue());

        }
    });

onValueChangeTextBox如果失去焦点将被调用。每当输入值发生变化时,我都会尝试调用它。我读过的解决方案都涉及处理 keyup 和 paste 事件,例如这个答案。如何在 GWT 中构建 Facebook 风格的输入框 这不是 GWT 2.5.1 中的地址吗?有没有办法绑定到本机输入更改方法?如果它们具有此功能,则可以接受另一个小部件或使用 UI 框架

4

4 回答 4

4

GWT 中唯一的方法是绑定到按键按下/按键向上和粘贴事件。

请发送一个补丁来添加对输入事件的支持(使用addBitlessDomHandler): http: //www.gwtproject.org/makinggwtbetter.html,它应该很容易(添加 aa casein DOMImpl)并且有很好的机会进入(如果发送得足够早,很有可能在 GWT 2.6 中发货)

于 2013-10-05T21:17:46.233 回答
4

解决方案是使用正确的事件,那就是input事件,所以看看如何挂钩它,有很多方法可以做到。因为我使用元素而不是小部件,所以我使用它的代码:

    Element input = Document.get().getElementById("my-input");
    DOM.sinkBitlessEvent(input, "input");
    DOM.setEventListener(input, event -> GWT.log("Event!"));
于 2018-11-07T21:16:13.813 回答
0

您可以只使用addChangeHandler()和 onChange, tb.getValue()

于 2013-10-05T18:43:46.820 回答
0

我使用以下内容来检测文本框的值何时发生变化。请记住,这只检测文本框是从空到满还是从满到空。这样做是为了尝试减少对服务器的异步调用以验证输入

@UiHandler("notes")
    @SuppressWarnings("unused")
    public void notes(KeyUpEvent event) {
        if (!areNotesCaptured && !notes.getText().isEmpty()){
            fireLeaveSelectionUpdatedEvent();
            areNotesCaptured = true;
        } else if (areNotesCaptured && notes.getText().isEmpty()){
           fireLeaveSelectionUpdatedEvent();
            areNotesCaptured = false;
        }
    }
于 2014-05-22T14:53:09.037 回答